【发布时间】:2014-12-24 13:43:26
【问题描述】:
我是新来的,我的 vb.net 代码有一些问题。我在面板上动态创建了几个文本框,我希望我的代码在提交表单后将这些值保存到数据库中。问题是我无法找到如何从这些 texbox 中获取值的方法。我尝试了在互联网上找到的所有内容,但仍然收到错误消息“对象引用未设置为对象的实例”。有人可以告诉我我做错了什么。 这是我如何创建 texboxes 的代码:
for i As Integer = 0 To cntPos -1
Dim txtJobTo as TextBox = new TextBox()
txtJobTo.ID = "txtJobTo_" & jobID
Dim label as Label = new Label()
label.text = posPanel.Rows(i).Item("Position")
pnlContainer.Controls.Add(label)
pnlContainer.Controls.Add(new LiteralControl("</td><td>"))
pnlContainer.Controls.Add(txtJobTo)
next
这行代码显示页面上的那些 texboxes
<tr bgcolor="#FFCC99"><td colspan="4">
<asp:Panel ID="pnlContainer" runat="server" Visible="true"></asp:Panel></td></tr>
<tr><td colspan='6' align='center'> <asp:Button ID="cmdSave" Text="Save" ToolTip="cmdSave" CommandArgument="cmdSave_Click" runat="server" /></td></tr>
这是应该保存所有数据的代码的一部分
Sub cmdSave_Click(ByVal sender As System.Object, e As EventArgs) Handles cmdSave.Click
...
for i As Integer = 0 To cntPosIns -1
Dim strTo as TextBox = New TextBox()
posID = posIns.Rows(i).Item("ID_Pos")
strTo.Text =CType(pnlContainer.FindControl("txtJobTo_" & posID.ToString()),TextBox).Text
....
'Insert into database
next
我总是在这一行收到错误消息 strTo.Text =CType(pnlContainer.FindControl("txtJobTo_" & posID.ToString()),TextBox).Text 有人可以给我一些关于如何解决这个问题的建议吗?在这种情况下,从动态创建的文本框中读取值的正确方法是什么? 谢谢
【问题讨论】:
-
对不起,我是 vb.net 的新手,所以如果我问一些基本的问题,我很抱歉。我阅读了您发送给我的链接,并尝试更改代码。我将提交按钮的 PostBackUrl 属性设置到另一个页面。在另一个页面中,我检查了 If PreviousPage IsNot Nothing Then If PreviousPage.IsCrossPagePostBack = True Then ... 而且我还将 Dim strTo 更改为 TextBox strTo.Text = CType(PreviousPage.FindControl("txtJobTo_" & posID.ToString()) , TextBox).Text 但我仍然收到相同的错误消息
标签: vb.net