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)