For Grid_Su = 0 to N Grid_Name = Grid_Su Dim DataGrid1 As New DataGrid Call NEW_DATAGRID1(DataGrid1, Grid_Name, Grid_Su, dviw) Next Grid_Su '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ '■■■■■■データグリッドを作成するSubプロシージャ Private Sub NEW_DATAGRID1(ByVal DataGrid1 As DataGrid, ByVal Grid_Name As String, ByVal Grid_Su As Integer, ByVal dviw As DataView) Dim TOP_POS As Integer = 250 + Grid_Su * 90
Dim GridColumn0 As New EditCommandColumn GridColumn0.ButtonType = ButtonColumnType.PushButton GridColumn0.HeaderText = "編集用ボタン" GridColumn0.HeaderStyle.HorizontalAlign = HorizontalAlign.Center GridColumn0.FooterText = "合計" GridColumn0.FooterStyle.HorizontalAlign = HorizontalAlign.Center GridColumn0.EditText = "編集" GridColumn0.UpdateText = "更新" GridColumn0.CancelText = "取消"
GridColumn0.HeaderStyle.Width = New Unit(80) GridColumn0.ItemStyle.Width = New Unit(80) DataGrid1.Columns.Add(GridColumn0)
Dim GridColumn1 As New BoundColumn GridColumn1.DataField = "社員名" GridColumn1.HeaderText = "社員名" GridColumn1.HeaderStyle.Width = New Unit(60) GridColumn1.HeaderStyle.HorizontalAlign = HorizontalAlign.Center GridColumn1.ItemStyle.Width = New Unit(60) DataGrid1.Columns.Add(GridColumn1)
Dim GridColumn2 As New BoundColumn GridColumn2.DataField = "社内部署名" GridColumn2.HeaderText = "社内部署名" GridColumn2.HeaderStyle.Width = New Unit(80) GridColumn2.HeaderStyle.HorizontalAlign = HorizontalAlign.Center GridColumn2.ItemStyle.Width = New Unit(80) DataGrid1.Columns.Add(GridColumn2) DataGrid1.Columns(2).Visible = False End Sub
分類:[ASP.NET]
こんにちは。
データグリッドを動的に作成した場合の編集ボタンや取消ボタンの使い方についてご存知でしたら教えてください。
下記のように、表示するデータグリッドの数が動的に変わり(データグリッドを2つ表示するときもあれば3つのときもある)、
更に、各データグリッドの各行のデータを更新する処理を考えています。
各データグリッドの各行に表示されるデータを更新できるように<編集ボタン><更新ボタン><取消ボタン>を
設定しており、正しく<編集ボタン>は表示されているのですが、
クリックしてもイベント処理がうまくいかずに<更新ボタン>の表示などが出来ません。
「イベント処理がうまくいかずに」と書きましたが、実際にはイベント処理についてどのようすればよいのか分からず、
全くコーディングしていません。
色々な参考書によると、<編集ボタン>をクリックするとボタンに応じて
OnEditCommand、OnUpdateCommand、OnCancelCommandの3つのイベントが発生するので、
<asp:DataGrid id="DataGrid1"
OnEditCommand = "aaa処理"
OnUpdateCommand = "bbb処理"
OnCancelCommand = "ccc処理"
・・・
と<asp:DataGrid>タグの属性にイベント処理を指定すること
と記載されていますが、動的にデータグリッドを作成した場合はどのようにすればよいのか分かりません。
恐らく、下記のNEW_DATAGRID1の中にOnEditCommand = "aaa処理"をコーディングするのではないかと思いますが、
どのようにすればよいのかご存知の方がいらしたら教えてください。
データグリッドDataGrid1のプロパティにOnEditCommandがあれば、それに"aaa処理"を設定することになるのでしょうが、
そのようなプロパティがないために設定方法がわかりません。
For Grid_Su = 0 to N
Grid_Name = Grid_Su
Dim DataGrid1 As New DataGrid
Call NEW_DATAGRID1(DataGrid1, Grid_Name, Grid_Su, dviw)
Next Grid_Su
'■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
'■■■■■■データグリッドを作成するSubプロシージャ
Private Sub NEW_DATAGRID1(ByVal DataGrid1 As DataGrid, ByVal Grid_Name As String, ByVal Grid_Su As Integer, ByVal dviw As DataView)
Dim TOP_POS As Integer = 250 + Grid_Su * 90
DataGrid1.ID = "DataGrid1_" & Grid_Name
DataGrid1.Style("Position") = "Absolute"
DataGrid1.Style("Top") = TOP_POS & "px"
DataGrid1.Style("Left") = "16px"
DataGrid1.Style("Font-size") = "x-small"
DataGrid1.HeaderStyle.ForeColor = Color.Yellow
DataGrid1.HeaderStyle.BackColor = Color.Gray
DataGrid1.FooterStyle.ForeColor = Color.Yellow
DataGrid1.FooterStyle.BackColor = Color.Gray
DataGrid1.ShowFooter = True
DataGrid1.DataSource = dviw
DataGrid1.AutoGenerateColumns = False
Form1.Controls.Add(DataGrid1)
Dim GridColumn0 As New EditCommandColumn
GridColumn0.ButtonType = ButtonColumnType.PushButton
GridColumn0.HeaderText = "編集用ボタン"
GridColumn0.HeaderStyle.HorizontalAlign = HorizontalAlign.Center
GridColumn0.FooterText = "合計"
GridColumn0.FooterStyle.HorizontalAlign = HorizontalAlign.Center
GridColumn0.EditText = "編集"
GridColumn0.UpdateText = "更新"
GridColumn0.CancelText = "取消"
GridColumn0.HeaderStyle.Width = New Unit(80)
GridColumn0.ItemStyle.Width = New Unit(80)
DataGrid1.Columns.Add(GridColumn0)
Dim GridColumn1 As New BoundColumn
GridColumn1.DataField = "社員名"
GridColumn1.HeaderText = "社員名"
GridColumn1.HeaderStyle.Width = New Unit(60)
GridColumn1.HeaderStyle.HorizontalAlign = HorizontalAlign.Center
GridColumn1.ItemStyle.Width = New Unit(60)
DataGrid1.Columns.Add(GridColumn1)
Dim GridColumn2 As New BoundColumn
GridColumn2.DataField = "社内部署名"
GridColumn2.HeaderText = "社内部署名"
GridColumn2.HeaderStyle.Width = New Unit(80)
GridColumn2.HeaderStyle.HorizontalAlign = HorizontalAlign.Center
GridColumn2.ItemStyle.Width = New Unit(80)
DataGrid1.Columns.Add(GridColumn2)
DataGrid1.Columns(2).Visible = False
End Sub