【问题标题】:Show/Hide Checkbox in ASP.NET Datalist (nested)在 ASP.NET 数据列表中显示/隐藏复选框(嵌套)
【发布时间】:2012-04-14 23:56:02
【问题描述】:

我有一个嵌套的 ASP 数据列表,其中包含一个标签和一个在页面加载时绑定的复选框。

在绑定过程中,将一个字符串解析为 datalist 绑定方法。如果此字符串等于值 1 我希望复选框对嵌套数据列表中的每个项目可见。

并且保持隐藏的是值不是 1

但是,代码可以编译并运行。它将字符串值检测为 1,但随后不会使复选框可见。我究竟做错了什么?我该如何解决这个问题?

数据列表:

<asp:DataList runat="server" id="dgQuestionnaire" DataKeyField="QuestionID" CssClass="confirm">
    <ItemTemplate>
        <div class="content_box" id="added_question">
            <h3>Question <asp:Label ID="lblOrder" runat="server" Text='<%# Container.ItemIndex  + 1 %>'></asp:Label></h3>
            <p>Question Type</p>
            <p><%# DataBinder.Eval(Container.DataItem, "QuestionText") %></p>
            <asp:DataList ID="nestedDataList" runat="server">
                <ItemTemplate>
                    <asp:CheckBox runat="server" ID="sampleCheckbox" Visible="false" />
                    <p class="confirm_answer new"><%# DataBinder.Eval(Container.DataItem, "AnswerTitle") %></p>
                </ItemTemplate>
            </asp:DataList>
        </div>    
    </ItemTemplate> 
</asp:DataList>

下面是代码:

public void BindParentDataList(int questionnaireID)
{
    // populate the datalist with items from the datatable.
    SendData = new OsqarSQL();
    DT = SendData.GetQuestionNameDataList(questionnaireID);
    dgQuestionnaire.DataSource = DT;
    dgQuestionnaire.DataBind();

    // each item in the datalist call BindNestedDataList method.
    foreach (DataListItem Item in dgQuestionnaire.Items)
    {
        BindNestedDataList(Item.ItemIndex, DT.Rows[Item.ItemIndex][2].ToString());
    }
}

public void BindNestedDataList(int ItemIndex, string _questionType)
{
    // get questionID value for the current datalist item and populate the answers for the question.
    int questionID = Convert.ToInt32(dgQuestionnaire.DataKeys[ItemIndex]);
    DT = SendData.GetAnswerTitle(questionID);
    DataList nestedDataList = (DataList)dgQuestionnaire.Items[ItemIndex].FindControl("nestedDataList");

    if(_questionType == "1")
    {                
        foreach (DataListItem Item in nestedDataList.Items)
        {
            CheckBox checkbox = (CheckBox)Item.FindControl("sampleCheckbox");
            checkbox.Visible = true;
        } 
    }
    nestedDataList.DataSource = DT;
    nestedDataList.DataBind();
}

【问题讨论】:

    标签: c# asp.net checkbox nested datalist


    【解决方案1】:

    一切似乎都是对的,只是你把代码写在了错误的地方,把它写在 Row/Item 绑定事件中并获取当前绑定行而不是 row[itemindex]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 2018-02-21
      • 1970-01-01
      相关资源
      最近更新 更多