简体   繁体   English

在数据列表中查找控件

[英]Find Control In Datalist

When I tried To Find Control n data List As I Mentioned Below 当我尝试如下所述查找控件n数据列表时

 Error(Object reference not set to an instance of an object.

I cannot know 我不知道

protected void dlCategory_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        Label Lb = (Label)e.Item.FindControl("LblCat");
        Lb.ForeColor = System.Drawing.Color.Red;
    }



<Datalist>
 <asp:DataList ID="dlSubCategory" runat="server" 
                                    DataSource='<%# GetSubCategory(Convert.ToString(Eval("Category_ID")))%>' 
                                    onitemcreated="dlSubCategory_ItemCreated" 
                                    onitemdatabound="dlSubCategory_ItemDataBound">
                                    <EditItemStyle ForeColor="#CC3300" />
                                    <SelectedItemStyle ForeColor="#CC3300" />
                                    <ItemTemplate>
                                        <div class="buttn_div_sub">
                                            <div class="lm40 tm2 buttn_txt">
                                                <a href='<%# Convert.ToString(Eval("ProductCategory_Id")).Insert(0,"ListView.aspx?ProductCategory_Id=") %>'
                                                    class="buttn_txt">
                                                    <asp:Label ID="Label1" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"Name") %>'></asp:Label>
                                                </a>
                                            </div>
                                        </div>
                                    </ItemTemplate>
                                </asp:DataList>
                            </ItemTemplate>
protected void dlCategory_ItemDataBound(object sender, DataListItemEventArgs e) 
{
    Label Label1 = e.Item.FindControl("Label1") as Label;
    if (LblCat != null)
    {
        string id = ((System.Data.DataRowView)e.Item.DataItem).Row["ProductCategory_Id"].ToString();

        if (Request.QueryString["ProductCategory_Id"] == id)
        {
            Label1.ForeColor = System.Drawing.Color.Red;
        }
    }
}

Could you try this? 你可以试试这个吗? The first item passed to this function will be the header (if present on the datalist) and that's why you get the error. 传递给此函数的第一项将是标头(如果存在于数据列表中),这就是为什么您会收到错误消息。

protected void dlCategory_ItemDataBound(object sender, DataListItemEventArgs e) 
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        Label Lb = (Label)e.Item.FindControl("LblCat"); Lb.ForeColor = System.Drawing.Color.Red;
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM