2013-03-03 60 views
0

我想要做的是继承GridView并以编程方式将LinqDataSource嵌入到其中。原因是我想有一个通用的网格视图,它允许列和网格属性的标记定义,但它实现了一个GetDataSourceEvent,它将传递sortExpression,pager页索引和pager行计数以进行高效的模型查询。后者将通过订阅DataSourceControl的选择事件来完成。带有嵌入式LinqDataSource/ObjectDataSource的asp GridView

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

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

+1

这是一个asp.net的问题,它不应该被标记为传统的asp – John 2013-03-03 21:33:25

回答

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) 
+0

实现的关键是利用DataSourceControl/ObjectDataSource/LinqDataSource背后的事件,并允许绑定到通用List数据源。我希望能够公开一个可以处理的事件来传递数据源。这个事件将加载关于要检索的行数,偏移量,排序顺序等的信息。因此,除了模式,我基本上感兴趣的是我如何坚持一个动态创建的LinqDataSource。 – mematei 2013-03-06 20:18:53