1
我有一个非常独特的布局页面,其中36个文本框使用表格布置,以便它反映了展厅的布局以及可以保留什么展览表格。我已经能够保存他们所有的数据库无缝地通过形式键这样的循环:asp.net动态设置文本框的值
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"
等...
“对象引用”错误很可能是由于FindControl无法找到正确的控件。 ** r(“tbname”)**是否包含呈现控件的asp.net标识?请注意,Id(由.Net用于引用控件)和Name(用于获取值)通常是不同的。 – Sam
我已将所有文本框标记为tb1,tb2,tb3等。并且我已将这些标识存储在数据库的tbname列中。我想我应该这样做。我想知道如果控件无法在页面加载时设置? – user2439015
它们应该在Page Load上可用。我认为问题是查找控件需要提供的id(例如:ctl00 $ ContentPlaceHolder1 $ tb1) – Sam