0

含まれている DataItem のプロパティに基づいて項目をフィルター処理する asp:ListView があります。

指定したプロパティ (FieldName) に探している値がない限り、アイテムを非表示に設定したいと考えています。

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

しかし、ポストバックでは、DataItem が null であり、以前の状態を復元できません。私の期待は、Listview が可視プロパティを Viewstate に保持できるということでしたが、そうではありません。Listview.Databind を呼び出すこともできますが、リストビューはチェックボックスでアイテムを選択するために使用され、この選択はデータバインドで失われます。

データバインド後にアイテムの可視性を最初の状態に戻すにはどうすればよいですか?

4

2 に答える 2

0

代わりに、ロジックを OnItemDataBound イベントに入れます。項目が作成された時点ではまだバインドされていないため、データは常に null です。

于 2011-08-22T15:00:00.467 に答える
0

このシナリオでは、追加のフィールドをチェックしています。その追加フィールドを DataKeyNames コレクションに格納し、そこから値を取得します。その値はビューステートに保存されるため、ポストバック全体で使用できます。

HTH。

于 2011-08-25T12:35:37.847 に答える