ASP.NET ListView, пользовательские источники данных и элементы редактирования - PullRequest
2 голосов
/ 24 февраля 2009

В пошаговых руководствах по MSDN приведен ряд примеров, в которых вы можете перетащить DataSource из панели инструментов, выполнить несколько простых шагов настройки, а затем перетащить ListView на экран, указать его на DataSource и затем - у вас есть полное редактирование таблицы.

Сейчас я пытаюсь написать свой собственный класс DataSource (класс, реализующий System.Web.UI.IDataSource ) и мой собственный класс DataSourceView. Теперь я назначаю экземпляр этого пользовательского класса DataSource классу ListView.DataSource .

Отображение всех элементов работает хорошо. Однако обновление, вставка и удаление просто не работает. Я переопределяю каждую функцию, которую я могу в моем классе DataSourceView, и они просто не вызываются.

Это такая огромная тема, я сосредоточу этот вопрос на одном простом примере:

Когда вы нажимаете кнопку «Редактировать» (кнопка внутри ItemTemplate с CommandName из «Edit», вы ожидаете, что ItemTemplate будет заменен EditItemTemplate . Этого не произошло. Единственный способ, которым я мог это сделать, - обработать событие onitemediting .

protected void _listViewPublicHolidays_ItemEditing(object sender, ListViewEditEventArgs e)
{
    _listViewPublicHolidays.EditIndex = e.NewEditIndex;
    _listViewPublicHolidays.DataBind();
}

Вряд ли это проблема, но почему мне вообще пришлось это делать? В пошаговых руководствах по MSDN, где я присоединяю ListView к LinqDataSource , этот код не нужно писать. Может ли кто-то, кто был здесь раньше, рискнуть предположить, что будет отличаться или отсутствовать в моем пользовательском источнике данных?

Ответы [ 2 ]

1 голос
/ 24 февраля 2009

Я знаю, что это альтернативный подход и может не сработать в вашем конкретном случае, но вы можете захотеть рассмотреть использование ObjectDataSource с простой объектной моделью, и она будет выполнять некоторую работу за вас, а не писать целое DataSource.

Так, например, вы можете создать довольно простой класс PublicHolidays с парой методов для

public List<PublicHoliday> GetAllPublicHolidays()

и

public void UpdatePublicHoliday(string name, date holidayDate)

и т. Д., И вы можете указать ObjectDataSource прямо на эти методы.

0 голосов
/ 02 июня 2010

Используя LinqDataSource или ObjectDataSource, привязка, установка индекса редактирования и т. Д. Обрабатываются через источник данных. Если вы связываете свою собственную коллекцию или набор данных, вам нужно немного поработать самостоятельно. Эти классы источников данных обрабатывают поддержание состояния данных автоматически, тогда как стандартные коллекции, такие как списки или наборы данных, этого не делают.

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