asp GridView со встроенным LinqDataSource/ObjectDataSource

То, что я пытаюсь сделать, это унаследовать GridView и встроить в него программно LinqDataSource. Причина этого в том, что я хочу иметь общее представление сетки, которое позволяет определять разметку столбцов и свойства сетки, но реализует GetDataSourceEvent, который будет передавать sortExpression, индекс страницы пейджера и количество строк пейджера для эффективного запроса модели. Последнее будет сделано путем подписки на событие Selecting DataSourceControl.

Проблема, с которой я сталкиваюсь, заключается в том, что если я добавлю LinqDataSource в UserControl, DataSourceId не будет найден. Я попытался OnInit и EnsureChildControls, чтобы создать LinqDataSource, но не повезло. Я видел несколько примеров того, как мы можем создавать пользовательские пейджеры, наследуя gridview, но я не могу найти подходящих событий для моей ситуации.

Может ли кто-нибудь указать мне правильное направление в попытке программно добавить DataSourceControl и назначить ему GridView DataSourceId?

1 ответ

Вы можете создать публичный метод, который принимает ваш тип источника данных. Затем, когда вы создаете экземпляр своего пользовательского класса управления, привязывайте к методу. Например, если вы использовали список строк в качестве источника данных и имели пользовательский элемент управления с именем myUserControl:

Partial Class user_controls_myUserControl
    Inherits System.Web.UI.UserControl


    Public Sub bindMyData(ByVal myDataSource As List(Of String))
      'bind stuff here
    End Sub

End Class

Это будет называться так:

dim myListOfString as new list(of String)
Me.myUserControl1.bindMyData(myListOfString)
Другие вопросы по тегам