Привязка списка объектов к ListView с UserControl внутри, проблема - PullRequest
0 голосов
/ 26 сентября 2011

У меня есть ListView , содержащий UserControl с открытым свойством MyPublicProperty типа MyType .

public MyType MyPublicProperty{ get; set; }

Я привязываю к ListView список элементов MyType

listView.DataSource = (List<MyType>) items;
listView.DataBind();

В aspx мой ListView определен так

<asp:ListView ID="listView" runat="server">
    <ItemTemplate>
        <uc1:MyControl ID="myControl" runat="server" MyPublicProperty="<%#(MyType)Container.DataItem %>" />
    </ItemTemplate>
</asp:ListView>

Теперь происходит то, что в MyControl MyPublicProperty не устанавливается для события onDataBinding, и ни после этого события.

Вы случайно не знаете, почему, и решение для этого ?? EDIT: Глядя больше на проблемы, я заметил, что

listView.Items[0].DataItem 

равно нулю после вызова listView.DataBind () , но источник данных списка содержит более 1 элементов.

1 Ответ

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

Если вы хотите получить доступ к данным после их привязки, вам следует использовать событие ItemDataBound , которое будет вызываться для каждого элемента данных:

listView.ItemDataBound += new EventHandler<ListViewItemEventArgs>(listView_ItemDataBound);

Тогда:

private void listView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        MyType data = (MyType)((ListViewDataItem)e.Item).DataItem;

        // Use your data...
    }
}

Чего вы пытаетесь достичь?То, как у вас есть код, теперь данные будут легко настраиваться в UserControl без дальнейшей работы с вами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...