Почему Item считается для ListView Return Null, если их значение равно 1 элементу в ListView ItemTemplate? - PullRequest
0 голосов
/ 30 октября 2009

У меня нет этой проблемы. Если у меня есть ListView, и он привязан к базе данных с 1 элементом в просмотре списка, почему Item Count = 0, когда я пытаюсь получить доступ к элементу управления в ListView, используя ListView.Item [0] .FindControl (".. ... ") метод?

Вот пример кода со страницы msdn в элементе управления ListView. Представьте, что SqlDataSource1 возвращает 1 строку из базы данных, поэтому он вставляется в ItemTemplate, я думаю, что Item [0] будет соответствовать этому Item, но это не так?

<asp:ListView runat="server" ID="ListView1" 
    DataSourceID="SqlDataSource1">
    <LayoutTemplate>
    <table runat="server" id="table1" runat="server" >
    <tr runat="server" id="itemPlaceholder" ></tr>
    </table>
    </LayoutTemplate>
    <ItemTemplate>
    <tr runat="server>
    <td runat="server">
    <asp:Label ID="NameLabel" runat="server" 
      Text='<%#Eval("Name") %>' />
    </td>
    </tr>
    </ItemTemplate>
    </asp:ListView>

1 Ответ

1 голос
/ 01 сентября 2011

Возможно, ваш ListView на самом деле не завершил привязку данных в том месте, где работает ваш код.

Попробуйте связать метод с событием ItemDataBound в ListView. Это сработает после того, как каждый элемент в источнике данных был обработан ListView. В этом методе вы можете использовать FindControls, чтобы найти элементы управления и обновить их состояние.

Пример:

<asp:ListView ID="ListViewProducts" runat="server" DataSourceID="ProductsDataSource"
OnItemDataBound="ListViewProducts_ItemDataBound" >
... ItemTemplate defines a link button called LinkButtonDoAdminStuff ...


protected void ListViewProducts_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    var myLinkButton = e.Item.FindControl("LinkButtonDoAdminStuff") as LinkButton;
    if (myLinkButton != null)
        myLinkButton.Visible = IsAdmin();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...