- - PR -
[ASP.NET] DataGridをネストさせて子DataGridに編集機能をつけたい
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