количество элементов в списке данных, который находится внутри - PullRequest
0 голосов
/ 09 апреля 2011

Я пытаюсь получить счетчик предметов из списка данных, который находится внутри списка данных. Я думал, что это то, как я это сделаю, но возвращение будет нулевым. (код 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 ]

2 голосов
/ 15 сентября 2011

Это можно сделать следующим образом: 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";
    }
}
0 голосов
/ 09 апреля 2011

Возможно, еще раз проверьте ваш синтаксис ...

Если ваши 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# код для вложенного DataList вот так:

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]") найдет ваше вложенное DataList

...