为什么按钮单击两次插入数据

时间:2012-02-01 07:21:40

标签: asp.net database vb.net gridview insert

我有这个按钮,我添加了数据行但是,我只添加了两行日期,当点击此按钮时它给我4个数据,每个日期被插入两次意味着日期一个日期B日期A和日期B,问题是什么

受保护的子Button2_Click(发件人为对象,e为System.EventArgs)处理Button2.Click

    Dim rowIndex As Integer = 0
    Dim sc As New StringCollection()
    Dim sc1 As New Date
    If ViewState("CurrentTable") IsNot Nothing Then
        Dim dtCurrentTable As DataTable = DirectCast(ViewState("CurrentTable"), DataTable)
        Dim drCurrentRow As DataRow = Nothing
        If dtCurrentTable.Rows.Count < 10 Then
            For i As Integer = 1 To dtCurrentTable.Rows.Count
                'extract the TextBox values

                Dim box5 As TextBox = DirectCast(Gridview3.Rows(rowIndex).Cells(1).FindControl("TextBox5"), TextBox)


                Dim box7 As Date = Convert.ToDateTime(box5.Text)


                Dim myConn As New SqlConnection
                Dim myCmd As New SqlCommand
                myConn.ConnectionString = ConfigurationManager.ConnectionStrings("mydatabase").ConnectionString
                Dim cmd As String
                cmd = "Insert into Date values (@date) "
                myCmd.CommandText = cmd
                myCmd.CommandType = CommandType.Text

                myCmd.Parameters.Add(New SqlParameter("@date", box7))


                myCmd.Connection = myConn
                myConn.Open()
                myCmd.ExecuteNonQuery()
                myCmd.Dispose()
                myConn.Dispose()
                rowIndex += 1
            Next


        End If
    Else
        '   lblMessage.Text = "Cannot save as there no information recorded"
        MsgBox("failed")
    End If
End Sub
<asp:GridView ID="Gridview3" runat="server" AutoGenerateColumns="False" 
            Height="89px" ShowFooter="True" Width="303px">
            <Columns>
                <asp:BoundField DataField="RowNumber" HeaderText="No of Available:" />
                <asp:TemplateField HeaderText="New Date Available :">
                    <ItemTemplate>
                        <asp:TextBox ID="TextBox5" runat="server" />
                        <AjaxToolkit:CalendarExtender ID="calExtender6" runat="server" 
                            Format="dd/MM/yyyy" OnClientDateSelectionChanged="CheckDateEalier" 
                            TargetControlID="TextBox5" />
                    </ItemTemplate>
                    <FooterStyle Height="22px" HorizontalAlign="Right" />
                    <FooterTemplate>
                        <asp:Button ID="ButtonAdd" runat="server" onclick="ButtonAdd_Click" 
                            Text="Add New Row" />
                    </FooterTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>  
    Protected Sub ButtonAdd_Click(sender As Object, e As System.EventArgs)
    AddNewRowToGrid()
End Sub

3 个答案:

答案 0 :(得分:2)

您调用该函数两次,一次是在声明“Handles Button2.Click”时,第二次是在设置onclick =“ButtonAdd_Click”时。

您需要选择其中一个选项。

希望有帮助

答案 1 :(得分:1)

请查看视图页面。我在struts,spring,hibernate应用程序中遇到过类似的问题。我的动作方法被调用了两次。这是因为我已将按钮的标签作为提交。像<button:submit...这样的东西。只需确保调用一次或两次方法。

答案 2 :(得分:0)

我遇到了类似的问题,我创建了另一个按钮,并复制了第一个按钮的所有代码,并将其插入新按钮的后面,现在问题已解决。 它对我有用。