ListView не вызывает ItemCreated после обратной передачи - PullRequest
0 голосов
/ 22 августа 2011

У меня есть 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 имеет значение null, и я не могу восстановить предыдущее состояние.Я ожидал, что Listview сможет сохранить видимое свойство в Viewstate, но это не так.Я мог бы вызвать Listview.Databind, но просмотр списка используется для выбора элементов с флажком, и этот выбор теряется при привязке данных.

Как я могу восстановить видимость элементов до первого состояния после привязки данных?

Ответы [ 2 ]

0 голосов
/ 25 августа 2011

Для этого сценария вы проверяете дополнительное поле.Сохраните это дополнительное поле в коллекции DataKeyNames и извлеките значение оттуда.Это значение хранится в viewstate, поэтому оно будет доступно через обратные передачи.

HTH.

0 голосов
/ 22 августа 2011

Вместо этого поместите свою логику в событие OnItemDataBound. Данные всегда равны нулю, поскольку на момент создания элемента он еще не был связан.

...