数据列表中的datalist的项目数

时间:2011-04-08 21:51:49

标签: c# .net asp.net datalist

我正在尝试从位于数据列表中的数据列表中获取项目数。我以为这是我会怎么做但它返回null。 (aspx代码浓缩以便于阅读)

<asp:DataList id="searchResultsProductDataList" runat="server" >
 <asp:DataList ID="productDataList" runat="server">
 </asp:DataList>
</asp:DataList>

这是代码隐藏

DataList resultnumberDL = (DataList)e.Item.FindControl("productDataList");
LiteralTest.Text = resultnumberDL.Items.Count.ToString()

我也试过

DataList resultnumberDL = ((DataList)FindControl("productDataList"));
LiteralTest.Text = resultnumberDL.Items.Count.ToString()

这就是我要这样做的方法吗?

2 个答案:

答案 0 :(得分:2)

这可以在DataList1_ItemDataBound

中完成
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item)
    {
        Label PriceLabel = (Label)e.Item.FindControl("PriceLabel");
        Label SalePrice = (Label)e.Item.FindControl("SalePrice");

        //
        // Do you calculations here ..
        //

        SalePrice.Text = "Your Final Value";
    }
}

答案 1 :(得分:0)

也许仔细检查一下你的语法......

如果您的ASP.NET控件的结构如下:

<asp:DataList ID="dl1" runat="server" onitemdatabound="dl1_ItemDataBound">
    <ItemTemplate>
        ...
        <asp:DataList ID="dl2" runat="server" Enabled="true">
            <ItemTemplate>
                ...
            </ItemTemplate>
        </asp:DataList>
    </ItemTemplate>
</asp:DataList>

以及嵌套C#的{​​{1}}代码隐藏,如下所示:

DataList
在这种情况下,{p> protected void dl1_ItemDataBound(object sender, DataListItemEventArgs e) { DataList dl2 = (DataList)e.Item.FindControl("dl2"); ... // load DataTable dl2.DataSource = dt; dl2.DataBind(); } 会找到您的嵌套e.Item.FindControl("[id]")