我遇到了OnRowUpdating
事件。它不會將新數據保存在GridView1.EditIndex
行中。只要按下更新,它就會恢復到舊值。Gridview編輯更新到MS SQL數據庫
OnRowEditing
似乎運作正常。
OnRowCancelingEdit
也是如此,它似乎是正常工作。
ASPX:
<asp:GridView ID="GridView1" runat="server" AllowSorting="true" AutoPostBack="True" AutoGenerateColumns="True" AutoGenerateEditButton="True" OnRowCancelingEdit="Gridview1_OnRowCancelingEdit" OnRowEditing="Gridview1_OnRowEditing" OnRowUpdating="GridView1_OnRowUpdating"
AllowPaging="True" PageSize="50" OnPageIndexChanging="GridView1_PageIndexChanging">
</asp:GridView>
後面的代碼:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ViewState("pageIndex") = 1
ViewState("edit") = -1
ShowGrid()
End Sub
Sub ShowGrid()
Dim connStr, cmdStr As String
connStr = connection string works"
cmdStr = "SELECT * FROM OrbitDates;"
Dim ds As New DataSet
Dim dt As New DataTable()
Try
Using conn As New SqlConnection(connStr)
Using cmd As New SqlCommand(cmdStr, conn)
conn.Open()
cmd.ExecuteNonQuery()
Using da As New SqlDataAdapter(cmd)
da.Fill(ds)
dt = ds.Tables(0)
GridView1.EditIndex = Convert.ToInt32(ViewState("edit"))
dt.DefaultView.Sort = ViewState("Sort")
GridView1.DataSource = dt.DefaultView
GridView1.DataBind()
GridView1.PageIndex = Convert.ToInt32(ViewState("pageIndex"))
End Using
conn.Close()
cmd.Dispose()
conn.Dispose()
End Using
End Using
Catch ex As Exception
End Try
End Sub
Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs) Handles GridView1.PageIndexChanging
GridView1.PageIndex = e.NewPageIndex
ViewState("pageIndex") = e.NewPageIndex.ToString()
ShowGrid()
End Sub
Protected Sub GridView1_OnRowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs)
GridView1.EditIndex = e.NewEditIndex
ViewState("edit") = GridView1.EditIndex
ShowGrid()
End Sub
Protected Sub GridView1_OnRowCancelingEdit(ByVal sender As Object, ByVal e As GridViewCancelEditEventArgs)
GridView1.EditIndex = -1
ViewState("edit") = GridView1.EditIndex
ShowGrid()
End Sub
Protected Sub GridView1_OnRowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
Dim connStr, cmdStr As String
connStr = "connection string works"
cmdStr = "UPDATE OrbitDates SET ([email protected],[email protected],[email protected],[email protected]) WHERE [email protected];"
Try
Using conn As New SqlConnection(connStr)
Using cmd As New SqlCommand(cmdStr, conn)
conn.Open()
cmd.Parameters.AddWithValue("@ido", GridView1.Rows(e.RowIndex).Cells(0).Text)
cmd.Parameters.AddWithValue("@JD", GridView1.Rows(e.RowIndex).Cells(1).Text)
cmd.Parameters.AddWithValue("@Xecl1", GridView1.Rows(e.RowIndex).Cells(2).Text)
cmd.Parameters.AddWithValue("@Yecl1", GridView1.Rows(e.RowIndex).Cells(3).Text)
cmd.Parameters.AddWithValue("@Zecl1", GridView1.Rows(e.RowIndex).Cells(4).Text)
cmd.ExecuteNonQuery()
conn.Close()
cmd.Dispose()
conn.Dispose()
End Using
End Using
Catch ex As Exception
Throw ex
End Try
ViewState("edit") = e.RowIndex
ShowGrid()
End Sub
'「我選擇在aspx.vb工作,而不是ASPX因爲aspx.vb更加靈活,所以我的代碼是不可見的廣大市民。」' - 地球上的你是什麼甚至意思?我懷疑你對ASP.NET的工作原理有一些基本的誤解。 – David