当我点击按钮时,点击事件被触发两次..会出现什么问题? [英] when I clicks the button the click event fired twice .. What will be the problem ?
本文介绍了当我点击按钮时,点击事件被触发两次..会出现什么问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Imports System.Collections
Imports System.Configuration
Imports System.Data
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI.HtmlControls
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI
Partial Public Class gridviewdynamic
Inherits System.Web.UI.Page
Dim cc As Integer = 0
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
FirstGridViewRow()
End If
End Sub
Private Sub FirstGridViewRow()
Dim dt As New DataTable()
Dim dr As DataRow = Nothing
dt.Columns.Add(New DataColumn("RowNumber", GetType(String)))
dt.Columns.Add(New DataColumn("Col1", GetType(String)))
dt.Columns.Add(New DataColumn("Col2", GetType(String)))
dt.Columns.Add(New DataColumn("Col3", GetType(String)))
dt.Columns.Add(New DataColumn("Col4", GetType(String)))
dt.Columns.Add(New DataColumn("Col5", GetType(String)))
dr = dt.NewRow()
dr("RowNumber") = 1
dr("Col1") = String.Empty
dr("Col2") = String.Empty
dr("Col3") = String.Empty
dr("Col4") = String.Empty
dr("Col5") = String.Empty
dt.Rows.Add(dr)
ViewState("CurrentTable") = dt
grvStudentDetails.DataSource = dt
grvStudentDetails.DataBind()
Dim txn As TextBox = DirectCast(grvStudentDetails.Rows(0).Cells(1).FindControl("txtName"), TextBox)
txn.Focus()
Dim btnAdd As Button = DirectCast(grvStudentDetails.FooterRow.Cells(5).FindControl("ButtonAdd"), Button)
Page.Form.DefaultFocus = btnAdd.ClientID
End Sub
Private Sub AddNewRow()
Dim rowIndex As Integer = 0
If ViewState("CurrentTable") IsNot Nothing Then
Dim dtCurrentTable As DataTable = DirectCast(ViewState("CurrentTable"), DataTable)
Dim drCurrentRow As DataRow = Nothing
If dtCurrentTable.Rows.Count > 0 Then
For i As Integer = 1 To dtCurrentTable.Rows.Count
Dim TextBoxName As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(1).FindControl("txtName"), TextBox)
Dim TextBoxAge As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(2).FindControl("txtAge"), TextBox)
Dim TextBoxAddress As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(3).FindControl("txtAddress"), TextBox)
Dim RBLGender As RadioButtonList = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(4).FindControl("RBLGender"), RadioButtonList)
Dim DrpQualification As DropDownList = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(5).FindControl("drpQualification"), DropDownList)
drCurrentRow = dtCurrentTable.NewRow()
drCurrentRow("RowNumber") = i + 1
dtCurrentTable.Rows(i - 1)("Col1") = TextBoxName.Text
dtCurrentTable.Rows(i - 1)("Col2") = TextBoxAge.Text
dtCurrentTable.Rows(i - 1)("Col3") = TextBoxAddress.Text
dtCurrentTable.Rows(i - 1)("Col4") = RBLGender.SelectedValue
dtCurrentTable.Rows(i - 1)("Col5") = DrpQualification.SelectedValue
rowIndex += 1
Next
dtCurrentTable.Rows.Add(drCurrentRow)
ViewState("CurrentTable") = dtCurrentTable
grvStudentDetails.DataSource = dtCurrentTable
grvStudentDetails.DataBind()
Dim txn As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(1).FindControl("txtName"), TextBox)
' txn.Focus;
txn.Focus()
End If
Else
Response.Write("ViewState is null")
End If
SetPreviousData()
End Sub
Private Sub SetPreviousData()
Dim rowIndex As Integer = 0
If ViewState("CurrentTable") IsNot Nothing Then
Dim dt As DataTable = DirectCast(ViewState("CurrentTable"), DataTable)
If dt.Rows.Count > 0 Then
For i As Integer = 0 To dt.Rows.Count - 1
Dim TextBoxName As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(1).FindControl("txtName"), TextBox)
Dim TextBoxAge As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(2).FindControl("txtAge"), TextBox)
Dim TextBoxAddress As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(3).FindControl("txtAddress"), TextBox)
Dim RBLGender As RadioButtonList = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(4).FindControl("RBLGender"), RadioButtonList)
Dim DrpQualification As DropDownList = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(5).FindControl("drpQualification"), DropDownList)
' drCurrentRow["RowNumber"] = i + 1;
grvStudentDetails.Rows(i).Cells(0).Text = Convert.ToString(i + 1)
TextBoxName.Text = dt.Rows(i)("Col1").ToString()
TextBoxAge.Text = dt.Rows(i)("Col2").ToString()
TextBoxAddress.Text = dt.Rows(i)("Col3").ToString()
RBLGender.SelectedValue = dt.Rows(i)("Col4").ToString()
DrpQualification.SelectedValue = dt.Rows(i)("Col5").ToString()
rowIndex += 1
Next
End If
End If
End Sub
Protected Sub ButtonAdd_Click(sender As Object, e As EventArgs)
AddNewRow()
End Sub
Protected Sub grvStudentDetails_RowDeleting(sender As Object, e As GridViewDeleteEventArgs)
SetRowData()
If ViewState("CurrentTable") IsNot Nothing Then
Dim dt As DataTable = DirectCast(ViewState("CurrentTable"), DataTable)
Dim drCurrentRow As DataRow = Nothing
Dim rowIndex As Integer = Convert.ToInt32(e.RowIndex)
If dt.Rows.Count > 1 Then
dt.Rows.Remove(dt.Rows(rowIndex))
drCurrentRow = dt.NewRow()
ViewState("CurrentTable") = dt
grvStudentDetails.DataSource = dt
grvStudentDetails.DataBind()
For i As Integer = 0 To grvStudentDetails.Rows.Count - 2
grvStudentDetails.Rows(i).Cells(0).Text = Convert.ToString(i + 1)
Next
SetPreviousData()
End If
End If
End Sub
Private Sub SetRowData()
Dim rowIndex As Integer = 0
If ViewState("CurrentTable") IsNot Nothing Then
Dim dtCurrentTable As DataTable = DirectCast(ViewState("CurrentTable"), DataTable)
Dim drCurrentRow As DataRow = Nothing
If dtCurrentTable.Rows.Count > 0 Then
For i As Integer = 1 To dtCurrentTable.Rows.Count
Dim TextBoxName As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(1).FindControl("txtName"), TextBox)
Dim TextBoxAge As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(2).FindControl("txtAge"), TextBox)
Dim TextBoxAddress As TextBox = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(3).FindControl("txtAddress"), TextBox)
Dim RBLGender As RadioButtonList = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(4).FindControl("RBLGender"), RadioButtonList)
Dim DrpQualification As DropDownList = DirectCast(grvStudentDetails.Rows(rowIndex).Cells(5).FindControl("drpQualification"), DropDownList)
drCurrentRow = dtCurrentTable.NewRow()
drCurrentRow("RowNumber") = i + 1
dtCurrentTable.Rows(i - 1)("Col1") = TextBoxName.Text
dtCurrentTable.Rows(i - 1)("Col2") = TextBoxAge.Text
dtCurrentTable.Rows(i - 1)("Col3") = TextBoxAddress.Text
dtCurrentTable.Rows(i - 1)("Col4") = RBLGender.SelectedValue
dtCurrentTable.Rows(i - 1)("Col5") = DrpQualification.SelectedValue
rowIndex += 1
Next
'grvStudentDetails.DataSource = dtCurrentTable;
'grvStudentDetails.DataBind();
ViewState("CurrentTable") = dtCurrentTable
End If
Else
Response.Write("ViewState is null")
End If
'SetPreviousData();
End Sub
Protected Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
Try
SetRowData()
Dim table As DataTable = TryCast(ViewState("CurrentTable"), DataTable)
cc = cc + 1
MsgBox(cc)
If table IsNot Nothing Then
For Each row As DataRow In table.Rows
Dim txName As String = TryCast(row.ItemArray(1), String)
Dim txAge As String = TryCast(row.ItemArray(2), String)
Dim txAdd As String = TryCast(row.ItemArray(3), String)
Dim rbGen As String = TryCast(row.ItemArray(4), String)
Dim drpQual As String = TryCast(row.ItemArray(5), String)
'If txName IsNot Nothing OrElse txAge IsNot Nothing OrElse txAdd IsNot Nothing OrElse rbGen IsNot Nothing OrElse drpQual IsNot Nothing Then
'Do whatever is needed with this data,
'Possibily push it in database
'I am just printing on the page to demonstrate that it is working.
Response.Write(String.Format("{0} {1} {2} {3} {4}<br/>", txName, txAge, txAdd, rbGen, drpQual))
'End If
Next
End If
Catch ex As Exception
Throw New Exception(ex.Message)
End Try
End Sub
End Class
推荐答案
以下更改
Change below
Protected Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
TO
TO
Protected Sub btnSave_Click(sender As Object, e As EventArgs)
这篇关于当我点击按钮时,点击事件被触发两次..会出现什么问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文