【问题标题】:Access to datalist event inside another databound control & finding controls inside nested datalist访问另一个数据绑定控件中的 datalist 事件并在嵌套 datalist 中查找控件
【发布时间】:2011-10-27 08:56:28
【问题描述】:

我在另一个 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>

【问题讨论】:

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


    【解决方案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;
            }
        }
    }
    

    【讨论】:

    • 是的,我这样做了,只是我的功能是“私人”而不是“受保护”。谢谢你。
    【解决方案2】:

    这是在子数据列表中查找标签控件的一种方法...

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

    希望对你有帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多