2013-03-03 93 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