- PR -

[ASP.NET] DataGridをネストさせて子DataGridに編集機能をつけたい

1
投稿者投稿内容
Risai
会議室デビュー日: 2003/11/09
投稿数: 1
お住まい・勤務地: 首都圏
投稿日時: 2003-12-10 20:23
はじめて投稿させていただきます。よろしくお願いいたします。

階層化しているデータを、DataGridをネストさせることで視覚的に表示させる、という方法は複数のサイトで見かけるのですが、子DataGridに編集機能をつけることは可能なのでしょうか?

<asp:DataGrid id=parentgrid runat="server" DataSource="<%# testDataSet1 %>" DataMember="ParentData">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:DataGrid id=childgrid runat="server"
DataSource='<%#((DataRowView)Container.DataItem).CreateChildView("Relation1") %>'
OnUpdateCommand="childgrid_UpdateCommand"
OnCancelCommand="childgrid_CancelCommand"
OnEditCommand="childgrid_EditCommand">
<Columns>
<asp:EditCommandColumn
ButtonType="LinkButton"
UpdateText="更新"
CancelText="キャンセル"
EditText="編集"></asp:EditCommandColumn>
</Columns>
</asp:DataGrid>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>

protected void childgrid_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid dg = source as DataGrid ;
dg.EditItemIndex = e.Item.ItemIndex ;
dg.DataBind() ;
}

Page_Load 内ではポストバックではない時だけ、親DataGridへのバインドをしていますが、これですとEditItemIndex設定後のDataBind で、インスタンスエラーになります。
子DataGridへのDataSourceの静的指定を止め、ページロードの度に親DataGridへのバインドを行い、親DataGridのItemDataBoundイベント内で子DataGridへのDataSource設定をすると、編集は正常に動作するものの、更新ボタンでもEditイベントが起動してしまいます。
(毎回バインドしてるからでしょうが。)
ViewStateにDataGridに関するデータが入っているのであれば、これを利用してどうにかならないものかとも思うのですが、そこまでの知識がなくて悩んでおります。
そもそも、このような処理は無理なんでしょうか??

どなたかご存知の方がいらっしゃいましたら御教授ください。
よろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)