Telerikフォーラムでこの質問をしましたが、返信はありませんでした。
私は以前にこのトピックが出てくるのを見たことがありますが、答えがないので、問題をできるだけ簡単に定義したいと思いました。
クエリを作成するLINQコマンドがあります。
var gridData = from au in dc.aspnet_Users join aur in dc.aspnet_UsersInRoles
on au.UserId equals aur.UserId join ar in dc.aspnet_Roles
on aur.RoleId equals ar.RoleId join am in dc.aspnet_Memberships
on au.UserIdequalsam。 UserId select new {au.UserName、ar.RoleName、am.Email、am.IsApproved、am.IsLockedOut};
重要な点は、これが1つ以上のテーブルを使用することです。
注:これは、標準のASP.NETメンバーシップフレームワークを使用してRolesテーブルとUsersテーブルにアクセスしています。
次に、単純な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を使用できますが、LINQクエリにテーブルが1つしかない場合に限ります。
2)2)ObjectDataSourceをデータセットに使用できますが、これもデータセットアダプターが単一のテーブルにアクセスしている場合にのみ機能します。
さまざまな提案されたデモとサンプルコードを見てきましたが、それらはすべて複数のテーブル/結合の問題を無視しています。
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を実現するにはどうすればよいですか?
助けてくれてありがとうリチャード