[英]Dynamic columns with asp:LinqDataSource
我像這樣使用LinqDataSource:
<asp:LinqDataSource ID="LinqDataSource3" runat="server" OnSelecting="LinqDataSource3_OnSelecting">
</asp:LinqDataSource>
我有ASPxGridView
<dxwgv:ASPxGridView ID="ASPxGridView2" ClientInstanceName="ASPxGridView2Client"
runat="server" AutoGenerateColumns="False"
DataSourceID="LinqDataSource3">
</dxwgv:ASPxGridView>
這樣我就可以在處理onSelecting事件時動態添加列:
protected void LinqDataSource3_OnSelecting(object sender, LinqDataSourceSelectEventArgs e)
{
MyModelDataContext context = new MyModelDataContext();
ASPxGridView grid = ASPxPageControl1.TabPages[3].FindControl("ASPxGridView2") as ASPxGridView;
if(grid.Columns.Count == 0){
GridViewDataTextColumn txtColumn1 = new GridViewDataTextColumn();
GridViewDataTextColumn txtColumn2 = new GridViewDataTextColumn();
txtColumn1.FieldName = "UserId";
txtColumn2.FieldName = "FirstName";
grid.Columns.Add(txtColumn1);
grid.Columns.Add(txtColumn2);
}
e.Result = from u in context.Users select new { UserId = u.UserId, FirstName = u.FirstName };
}
只是簡單地測試一下就可以了,原因是我的想法是擁有一種解決方案,該解決方案可以將linqDataSource用作de ASPxGridView的數據源,但可以連接2或3個表並在此網格中顯示結果。
我想問的是它是一個好的解決方案,還是有其他更好的方法可以通過聯接來呈現幾個表的視圖?
第二個問題是我有“用戶”和“組”,我想有一個表,其中有兩列“名稱”和“類型”
對於組,將按組鍵入,對於用戶,將鍵入user。
我的數據庫中沒有這樣的表
是否可以創建特定的類。 創建該類的對象列表,並使用linq查詢填充它,並將其用作該網格的linq數據源?
clas將是:
偽代碼:
Class MyClass {
string Type;
string Name;
}
還是有其他方法可以創建這樣的表?
非常感謝你再見
回答您的第一個問題,我想告訴您,創建列的代碼最好移到Page_Load事件。
至於第二個問題。 我認為在LinqDataSource對象的Selecting事件中提供自定義IQueriable是一個很好的解決方案。 您可以從那里的幾個表中獲取數據。 有關示例,請參閱:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.