为啥按钮单击两次插入数据

Posted

技术标签:

【中文标题】为啥按钮单击两次插入数据【英文标题】:why button click insert data twice为什么按钮单击两次插入数据 【发布时间】:2012-02-01 07:21:40 【问题描述】:

我有这个按钮,我在数据行中添加但是,我只添加两行日期,当点击这个按钮它给我 4 个数据,每个日期被插入两次意味着日期 A den date B den date A还有日期B,有什么问题

Protected Sub Button2_Click(sender As Object, e As 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

【问题讨论】:

我也遇到了同样的问题。我有保存按钮将用户选择的日期更新到网格视图中,并且网格视图以某种方式开始更新两行相同的数据。从按钮的源中删除“onclick="Button1_Click1" 就可以解决问题。我也在努力自学 asp.net。在非洲,一切都变得更加困难!感谢您的提示。 【参考方案1】:

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

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

希望对你有帮助

【讨论】:

我遇到了同样的问题,但你救了我。谢谢【参考方案2】:

请查看查看页面。我在我的 struts、spring、hibernate 应用程序中遇到过类似的问题。我的操作方法被调用了两次。这是因为我已将按钮的标签作为提交。类似 &lt;button:submit... 的东西。只需确保您的方法被调用一次或两次即可。

【讨论】:

我也在我的代码中更新了gridview,但是我不能调用另一个动作 我问你是否可以检查这个方法被调用了多少次。我对 abt .net 了解不多,我在 struts 中遇到过同样的情况,我使用 sysouts 进行检查。【参考方案3】:

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

【讨论】:

以上是关于为啥按钮单击两次插入数据的主要内容,如果未能解决你的问题,请参考以下文章

Sql将数据两次插入访问

如何避免重复请求按钮单击两次

为啥我的按钮点击执行多次?

如何在单击按钮时将数据插入数据库?

在单击按钮时将数据插入 Android Studio 中的 SQlite 数据库

单击按钮在数据库中插入值