1
votes

i have this button which i add in row of data however, i only add two row of the date, when click this button it give me 4 data, each date is being inserted twice meaning date A den date B den date A and den date B, what the problem

Protected Sub Button2_Click(sender As Object, e As System.EventArgs) Handles 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
I also experienced the same problem. I have SAVE button to update a date selected by the user into a gridview and somehow the gridview begun to update two rows of the same data. Deleting "onclick="Button1_Click1" from the source for the button did the trick. I am also struggling to learn asp.net on my own. Here in Africa, everything is a lot harder to do! Thanks for the tip.Oscar Njuguna

3 Answers

2
votes

You called the function twice, once when you declare "Handles Button2.Click" and second when you set the onclick="ButtonAdd_Click".

You need to choose one of the options.

Hope that's help

1
votes

Please check in the view page. I have experienced a similar issue like this in my struts,spring,hibernate application. My action method was called twice. This is because i have give the tag for the button as submit. something like <button:submit... . Just ensure that your method is called once or twice.

0
votes

I had a similar problem, I created another button and copied all codes of the first button and inserted behind the new button, now the problem has solved. it worked for me.