0

我有一个 asp:ListView 我想根据包含的 DataItem 的属性过滤项目

我想将项目设置为不可见,除非指定的属性 (FieldName) 具有我正在寻找的值。

 protected override void ItemCreated(object sender, ListViewItemEventArgs e)
    {
        if (DataBinder.Eval(e.Item.DataItem, FieldName).ToString() != FieldValue)
        {
            e.Item.Visible = SetVisible;
        }
    }

但是在回发时,DataItem 为空,我无法恢复以前的状态。我的期望是,Listview 将能够在 Viewstate 中保留可见属性,但事实并非如此。我可以调用 Listview.Databind,但 listview 用于选择带有复选框的项目,并且此选择在数据绑定中丢失。

如何在数据绑定后将项目可见性恢复到其第一个状态?

4

2 回答 2

0

将您的逻辑放在 OnItemDataBound 事件中。数据始终为空,因为在创建项目时,它还没有被绑定。

于 2011-08-22T15:00:00.467 回答
0

对于这种情况,您正在检查一个附加字段。将该附加字段存储在 DataKeyNames 集合中,然后从那里提取值。该值存储在视图状态中,因此可以在回发中使用。

HTH。

于 2011-08-25T12:35:37.847 回答