2012-02-01 64 views
1

我有這個按鈕,我在數據行中添加,但是,我只添加兩行日期,當點擊這個按鈕它給我4個數據,每個日期插入兩次意味着日期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 
+0

我也遇到了同樣的問題。我有SAVE按鈕來將用戶選擇的日期更新到一個gridview,並且gridview開始更新兩行相同的數據。從按鈕的源代碼中刪除「onclick =」Button1_Click1「這個技巧,我也很努力地學習asp.net,在非洲,所有事情都很難做!謝謝你的提示。 – 2013-07-22 16:55:39

回答

1

請查看頁面查看。在我的struts,spring,hibernate應用程序中,我遇到過類似的問題。我的行動方法被稱爲兩次。這是因爲我已經提交按鈕的標籤。像<button:submit...。只要確保你的方法被調用一次或兩次。

+0

我更新gridview在我的代碼中也是如此,但是我不能通過另一個動作被調用 – actKing 2012-02-01 09:03:49

+0

@actKing:已經嘗試過打印記錄器嗎?或者怎麼樣? – Arun 2012-02-01 11:11:56

+0

什麼打印記錄器? – actKing 2012-02-01 11:23:07

2

你調用了函數兩次,一次當你聲明「處理Button2.Click」時,第二次當你設置onclick =「ButtonAdd_Click」時。

您需要選擇其中一個選項。

希望這是幫助

+0

我正面臨同樣的問題,但是你救了我。 – MOB 2012-06-11 00:38:49