- PR -

DataGridを動的に変更

1
投稿者投稿内容
モグモグ
会議室デビュー日: 2004/09/17
投稿数: 3
投稿日時: 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

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