Доступ к событию списка данных внутри другого элемента управления с привязкой к данным и поиск элементов управления во вложенном списке данных

У меня есть 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>

person Narazana    schedule 27.10.2011    source источник


Ответы (2)


Вам нужно обработать событие ItemDataBound dlQuestion DataList и получить метку 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;
        }
    }
}
person Yuriy Rozhovetskiy    schedule 27.10.2011
comment
Да, я сделал это, за исключением того, что моя функция Private вместо Protected. Спасибо. - person Narazana; 27.10.2011

Это один из способов найти элемент управления меткой в ​​дочернем списке данных...

 //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);

}

я надеюсь, что это поможет вам ...

person rockyashkumar    schedule 27.10.2011