- - PR -
DataGridを動的に変更
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-12-13 20:48
ASP.NETの開発初心者です。
現在、ASP.NETでWebアプリの開発をしています。 動的にDataGridをLabelからTextBoXに切替えています。 DataGird全体を参照モードから編集モードへ切替えてデータ更新をしたいのですが、 DataGridのデータを取得すことができません。 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not IsPostBack Then strSQL = "SELECT * FROM TEST01" setDDL = New SetDropDownList(strSQL) setDDL.SetDS(DropDownList1) End If End Sub Private Sub btnLoginForm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoginForm.Click loginusr.PempAuth = "" Response.Redirect("Login.aspx") End Sub Private Sub dgDataBind() strSQL = "SELECT * FROM TEST02 WHERE B_CODE = '" + DropDownList1.SelectedValue.ToString() + "'" setDG = New SetDataGrid(strSQL) setDG.SetDS(DataGrid1) End Sub Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged dgDataBind() End Sub Protected Sub ccode_TextChanged(ByVal s As Object, ByVal e As EventArgs) Dim dgi As DataGridItem = CType(CType(s, Control).NamingContainer, DataGridItem) Dim keycode As String = CType(dgi.FindControl("id"), Label).Text If Not (marryList.Contains(keycode)) Then marryList.Add(keycode) End If End Sub Private Sub btnUpdateAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdateAll.Click updateAll() End Sub Private Sub updateAll() Dim strSQL = "update TEST02 set c_code = @c_code" & _ " WHERE id = @id" Dim cmd As OleDb.OleDbCommand Dim dgi As DataGridItem Dim keycode As String Dim strC_code As String For Each dgi In DataGrid1.Items ここでエラーとなります。 keycode = CType(dgi.FindControl("id"), Label).Text If marryList.Contains(keycode) Then strC_code = CType(dgi.FindControl("c_code"), TextBox).Text cmd = New OleDb.OleDbCommand(strSQL, con) With cmd.Parameters .Add("?c_code", strC_code) .Add("?id", keycode) con.Open() cmd.ExecuteNonQuery() con.Close() End With End If Next marryList.Clear() marryList.TrimToSize() dgDataBind() End Sub Public Class DynamicItemTemplateTextBox Implements ITemplate Private oID As String Private oWidth As Integer Public Sub New(ByVal SetoID As String, ByVal SetoWidth As Integer) oID = SetoID oWidth = SetoWidth End Sub Public Overridable Overloads Sub InstantiateIn(ByVal container As Control) Implements ITemplate.InstantiateIn Dim oTextBox As TextBox = New TextBox With oTextBox .ID = oID .Width = Unit.Point(oWidth) End With AddHandler oTextBox.DataBinding, AddressOf BindTextBox container.Controls.Add(oTextBox) End Sub Public Sub BindTextBox(ByVal sender As Object, ByVal e As EventArgs) Dim oTextBox As TextBox = CType(sender, TextBox) Dim container As DataGridItem = CType(oTextBox.NamingContainer, DataGridItem) oTextBox.Text = container.DataItem(oID) End Sub End Class DataGrid1.Itemsが0件となっています。 よろしくお願いいたします。 |
1