访问另一个数据绑定控件中的datalist事件&在嵌套的datalist中查找控件

时间:2011-10-27 08:56:29

标签: c# asp.net .net vb.net datalist

我在另一个DataList中有一个DataList。我想访问子DataList“dlQuestion”事件,ItemDataBound事件。另外,我想在子数据列表中找到控件LableControl“lblQuestion”。我怎么做?这是标记:

<asp:DataList ID="dlSection" runat="server" Width="100%">
   <ItemTemplate>
       <div>
         <asp:Label ID="lblSection" runat="server" Text='<%# Eval("Section") %>'></asp:Label>
         <asp:HiddenField ID="hfSectionId" runat="server" Value='<%# Eval("SectionId") %>' />
        </div>
        <asp:DataList ID="dlQuestion" runat="server"  >
        <ItemTemplate>
           <asp:Label ID="lblQuestion" runat="server" Text='<%# Eval("Question") %>'></asp:Label></td>
           <asp:HiddenField ID="hfQuestionId" runat="server" Value='<%# Eval("QuestionId") %>' />
        </ItemTemplate>
       </asp:DataList>
    </ItemTemplate>
</asp:DataList>

2 个答案:

答案 0 :(得分:1)

您需要处理dlQuestion DataList的ItemDataBound事件并在该事件处理程序中获取lblQuestion标签:

标记:

<asp:DataList ID="dlSection" runat="server" Width="100%">
     <ItemTemplate>
          <div>
               <asp:Label ID="lblSection" runat="server" Text='<%# Eval("Section") %>'></asp:Label>
               <asp:HiddenField ID="hfSectionId" runat="server" Value='<%# Eval("SectionId") %>' />
          </div>
          <asp:DataList ID="dlQuestion" runat="server" OnItemDataBound="dlQuestion_ItemDataBound">
               <ItemTemplate>
                    <asp:Label ID="lblQuestion" runat="server" Text='<%# Eval("Question") %>'></asp:Label></td>
                    <asp:HiddenField ID="hfQuestionId" runat="server" Value='<%# Eval("QuestionId") %>' />
               </ItemTemplate>
          </asp:DataList>
     </ItemTemplate>
</asp:DataList>

代码隐藏:

protected void dlQuestion_ItemDataBound(object sender, DataListItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        var lblQuestion = e.Item.FindControl("lblQuestion") as Label;
        if (lblQuestion != null)
        {
            lblQuestion.ForeColor = Color.Red;
        }
    }
}

答案 1 :(得分:0)

这是在儿童datalist中找到标签控件的一种方法......

 //here I am finding item(DataList) of child Datalist

 DataList dlSubChild = (DataList)childItem.FindControl("dlSubChild");
 foreach (DataListItem subChildItem in dlSubChild.Items)
 {

       //here I am finding item(TextBox) of sub child Datalist
       TextBox txtName = (TextBox)subChildItem.FindControl("txtName");



      //set literal(litName) text

     litName.Text = string.Format("{0}{1}", "Welcome ", txtName.Text);

}

我希望它会帮助你......