从不同面板中的两个动态文本框中获取值

时间:2019-06-18 02:12:58

标签: asp.net vb.net

我在不同的面板中有两个动态文本框。当我单击保存按钮时,它将在系统上保存多个记录。例如:每个面板上都有两个文本框。在面板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

1 个答案:

答案 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,并且它们的顺序相对应。