嵌入式LinqDataSource / ObjectDataSource的asp GridView

时间:2013-03-03 21:18:07

标签: c# gridview user-controls datasourcecontrol

我要做的是继承GridView并以编程方式将LinqDataSource嵌入其中。这样做的原因是我希望有一个通用的网格视图,它允许列和网格属性的标记定义,但实现了一个GetDataSourceEvent,它将传递sortExpression,pager页面索引和寻呼机行数,以进行有效的模型查询。后者将通过订阅DataSourceControl的Selecting事件来完成。

我遇到的问题是,如果我将LinqDataSource添加到UserControl,则无法找到DataSourceId。我尝试了OnInit和EnsureChildControls来创建LinqDataSource,但没有运气。我已经看到了一些如何通过继承gridview来创建自定义Pagers的示例,但我似乎无法为我的情况找到合适的事件。

任何人都可以指出我正确的方向尝试以编程方式添加DataSourceControl并将GridView DataSourceId分配给它吗?

1 个答案:

答案 0 :(得分:0)

您可以创建一个接受数据源类型的公共方法。然后,在创建用户控件类的实例时,绑定到该方法。例如,如果您使用字符串列表作为数据源并且具有名为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)