2010-03-03 51 views
1

我在Telerik論壇上詢問了這個問題,但沒有回覆,所以我對你很感興趣。如何在使用多個表格作爲數據源時編輯Telerik RadGrid

我以前見過這個話題,但沒有答案,所以我想我會盡可能簡單地定義問題。

我有一個LINQ命令創建一個查詢:在dc.aspnet_Users 從太子港

VAR的GridData =在dc.aspnet_UsersInRoles加入黃色葡萄球菌
上au.UserId等於aur.UserId 加入AR在dc.aspnet_Roles
上aur.RoleId等於ar.RoleId 加入我在dc.aspnet_Memberships
上au.UserId等於am.UserId 選擇新 { au.UserName, ar.RoleName, am.Email, am.IsApproved, am.IsLockedOut };

重要的一點是,這使用了超過1張桌子。

注意:這是使用標準的ASP.NET成員框架訪問角色和用戶表。

然後我有一個簡單radgrid控件:

<MasterTableView EditMode="InPlace"> 
    <RowIndicatorColumn> 
     <HeaderStyle Width="20px"></HeaderStyle> 
    </RowIndicatorColumn> 
    <ExpandCollapseColumn> 
     <HeaderStyle Width="20px"></HeaderStyle> 
    </ExpandCollapseColumn> 
</MasterTableView> 

最後,我的數據到電網結合在Page_Load中

rgUsers.AutoGenerateColumns = true; 
    rgUsers.DataSource = gridData.ToList(); 
    rgUsers.DataBind(); 
    rgUsers.EditIndexes.Add(1); 
    rgUsers.DataBind(); 

    GridView1.AutoGenerateColumns = true; 
    GridView1.DataSource = gridData.ToList(); 
    GridView1.DataBind(); 
    GridView1.EditIndex=1;   
    GridView1.DataBind(); 

這將顯示從所述數據4個表格正確。

我包括一個GridView來比較功能。

我也將網格編程編輯模式,以確保這不僅僅是編輯按鈕的問題。

但是,在編輯模式下時,RadGrid字段不可編輯。

我曾嘗試以下:

1)1)我可以使用的LinqDataSource允許編輯/更新,但僅如果只有1中的LINQ查詢表。

2)2)我可以在數據集上使用一個ObjectDataSource,但這隻有在數據集適配器訪問單個表時纔有效。

我已經看過了variouse建議演示和示例代碼,但他們都忽略了多臺/加入的問題:

www.telerik.com/community/code-library/aspnet-ajax/grid/automatic -operations-with-linqdatasource.aspx

demos.telerik.com/aspnet-ajax/grid/examples/dataediting/threelevel/defaultcs。ASPX

www.telerik.com/community/code-library/aspnet-ajax/grid/automatic-operations-with-linqdatasource.aspx

我不是執着於LINQ。爲了獲得可以支持更新和編輯到多個表格的RadGrid,我很樂意進行調整。

我應該怎麼做才能實現一個RadGrid,顯示由多個表組成的記錄,其中Update和Edit可用?

感謝所有幫助 理查德

回答

0

原來,LINQ查詢返回只讀匿名類型。

我用SQLDataSource使用存儲過程替換它,所以它現在可以工作。

謝謝

1

你有沒有使用ADO.net的數據視圖類連同DataSet類考慮?你應該能夠使用帶有存儲過程的system.data.sqlclient類來獲取數據,如果這是你正在使用的數據庫的類型。您可以將數據庫的關係保留在數據集類中,並且dataview類將允許您像查看單個表一樣查看數據。然後,您應該能夠將dataview類綁定到Telerik控件。

相關問題