我在不同的面板中有两个动态文本框。当我单击保存按钮时,它将在系统上保存多个记录。例如:每个面板上都有两个文本框。在面板1上说它具有(a,b),在面板2上说它具有(1,2)。我期望的结果是a1和b2。但是结果像这样a1 a2 b1 b2这是错误的。请帮忙。这是按钮的代码。
For Each text2 As TextBox In pnlTextBoxes.Controls.OfType(Of TextBox)()
For Each text1 As TextBox In pnlTextdesc.Controls.OfType(Of TextBox)()
Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("prod").ToString)
con.Open()
Try
Using cmd As New SqlCommand("INSERT INTO tblProduct (ProductName,productdescription) VALUES (@ProductName,@productdescription) ")
cmd.Parameters.AddWithValue("@ProductName", text2.text)
cmd.Parameters.AddWithValue("@productdescription", text1.text)
cmd.Connection = con
cmd.ExecuteNonQuery()
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
con.Close()
Next
Next
答案 0 :(得分:0)
由于使用嵌套的For Each
循环,因此可以得到该结果。如果您有两个字母和两个数字,并且对于每个字母,则将其与每个数字组合在一起,当然,您将最终得到四个组合。您应该做的是从两个TextBoxes
中创建两个Panels
列表,然后使用单个For
循环按索引将它们合并,例如
Dim list1 = TextBox In pnlTextBoxes.Controls.OfType(Of TextBox)().ToArray()
Dim list2 = TextBox In pnlTextdesc.Controls.OfType(Of TextBox)().ToArray()
For i = 0 To list1.GetUpperBound(0)
Dim text1 = list1(i)
Dim text2 = list2(i)
'...
Next
这假设每个TextBoxes
中将有相同数量的Panel
,并且它们的顺序相对应。