1

展示ホールのレイアウトと予約できる展示テーブルを反映するように、テーブルを使用してレイアウトされた 36 個のテキストボックスを備えた非常に明確なレイアウトのページがあります。次のようにフォームキーをループすることで、それらすべてをデータベースにシームレスに保存できました。

Protected Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click
    Dim tbname As String = ""
    Dim vendorName As String = ""
    Dim formkey As String = ""
    Dim conn As New SqlConnection(ConnectionStrings.Item("WebDB").ConnectionString)
    Dim cmd As New SqlCommand("UPDATE FloorPlan SET VendorName = @VendorName WHERE tbName = @tbName", conn)
        conn.Open()

    For Each o As Object In Request.Form.Keys
        formkey = o.ToString.Replace("ctl00$ContentPlaceHolder1$", "")
        If Left(formkey, 2) = "tb" Then
            tbname = formkey
            vendorName = Request(o.ToString)
            cmd.Parameters.AddWithValue("@VendorName", vendorName)
            cmd.Parameters.AddWithValue("@tbName", tbname)

            cmd.ExecuteNonQuery()
            cmd.Parameters.Clear()
            tbname = ""
            vendorName = ""
        End If
    Next
    conn.Close()
    conn.Dispose()
End Sub

ページ上のテキストボックスIDを見つけて値を入力する場所で、ページの読み込み時に値を動的に読み込む方法がわかりません。私はこのようなことを試しました:

For Each r In ds1.Tables("SE").Rows
    CType(FindControl(r("tbname")), TextBox).Text = r("vendorname")
Next

しかし、「オブジェクト参照がインスタンスに設定されていません...」というエラーが表示されます。tb1.text = "blah"、などをハードコーディングせずに値を適切にロードするには、どのようなアプローチを取る必要がありますかtb2.text = "acme"...

4

1 に答える 1

0

おそらく、ネストされたコントロールまたはマスター ページと関係があるのでしょうか? Atwood の再帰的検索コントロールを試すことができます: stackoverflow.com/questions/1457567/c-findcontrol

于 2013-05-31T12:37:11.160 に答える