请大虾帮帮忙看看代码,实在无法(已折腾较长时间了)在DataGrid中更新数据,先谢为敬!!!
我在VB.NET下开发的ASP.NET,现编辑、取消功能已实现,点击编辑可在文本框中输入值,可点击更新它就回到原汁,数据库中的数据也没任何变化!!!
代码如下:
<html>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data"%>
<%@ import NameSpace="System.Data.OleDB"%>
<%@ import NameSpace="System.Data"%>
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="Biology.aspx.vb" Inherits="WebStudent.Biology"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>Biology</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<h2 align="center"><font face="隶书" size="6">欢迎进入成都市锦城外国语学校高2005级6班学生生物成绩更新页面</font></h2>
<table cellSpacing="0" cellPadding="1" width="100%" border="0">
<tr>
<td vAlign="bottom" align="right" width="20%" bgColor="#b3f2ff" colSpan="3" height="36">欢迎你,<asp:label id="Name" Runat="server"></asp:label>!</td>
</tr>
</table>
<br>
<asp:datagrid id="DataGrid1" runat="server" Width="640" AutoGenerateColumns="false" BorderWidth="1"
OnUpdateCommand="Update_Grid" OnEditCommand="Edit_Grid" OnCancelCommand="Cancel_Grid" Visible="true"
ShowHeader="true" CellPadding="3" AllowPaging="true" PageSize="5" BorderColor="green">
<HeaderStyle BorderColor="White" BackColor="black" ForeColor="White" Font-Bold="True" Font-Name="Arial"
Font-Size="9" HorizontalAlign="Center" />
<ItemStyle BorderColor="" BackColor="#FFFFF0" ForeColor="Black" Font-Name="Arial" Font-Size="8"
Font-Bold="False" HorizontalAlign="Center" />
<EditItemStyle BorderColor="" BackColor="#FFFFF0" ForeColor="Black" Font-Name="Arial" Font-Size="7"
Font-Bold="False" HorizontalAlign="Center" />
<PagerStyle Mode="NumericPages" Font-Size="8" HorizontalAlign="Right" />
<Columns>
<asp:BoundColumn HeaderText="学号" ReadOnly="true" DataField="ID" />
<asp:BoundColumn HeaderText="姓名" ReadOnly="True" DataField="Name" />
<asp:BoundColumn HeaderText="生物成绩" DataField="Biology" />
<asp:EditCommandColumn ButtonType="LinkButton" CancelText="取消" EditText="编辑" UpdateText="更新" />
</Columns>
</asp:datagrid><br>
<asp:button id="BtnEnd" Runat="server" BackColor="#99ccff" Text="退出系统"></asp:button><br></form>
</body>
</HTML>
代码如下:
Public Class Biology
Inherits System.Web.UI.Page
Protected WithEvents Name As System.Web.UI.WebControls.Label
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
Protected WithEvents BtnEnd As System.Web.UI.WebControls.Button
Public Sub Page_load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim theUser As String
theUser = Session("User")
If Trim(theUser) = "" Then
Response.Write("<h2 style='color:red'>")
Response.Write("对不起,你尚未注册,请重新注册!</h2>")
Response.End()
End If
Name.Text = theUser '在此处放置初始化页的用户代码
BiologyDataBind()
End Sub
Sub Edit_Grid(ByVal Sender As Object, ByVal E As DataGridCommandEventArgs)
DataGrid1.EditItemIndex = E.Item.ItemIndex
BiologyDataBind()
End Sub
Function BiologyDataBind()
Dim Ds As New DataSet
Dim Cnn As OleDb.OleDbConnection
Dim Cmd As OleDb.OleDbDataAdapter
Dim StrSQL As String
Dim StrCnn As String
StrCnn = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Server.MapPath("/studentInfo.mdb")
Cnn = New OleDb.OleDbConnection(StrCnn)
StrSQL = "Select ID,Name,Biology from Grade1 order by id"
Cmd = New OleDb.OleDbDataAdapter(StrSQL, Cnn)
Cmd.Fill(Ds, "Grade1")
DataGrid1.DataSource = Ds.Tables("Grade1").DefaultView
DataGrid1.DataBind()
End Function
Sub Update_Grid(ByVal Sender As Object, ByVal E As DataGridCommandEventArgs)
Dim StrSQL As String
Dim theName As String
Dim theID As Integer
theID = CInt(E.Item.Cells(0).Text)
Dim BiologyText As TextBox
Dim StrCnn As String
theName = E.Item.Cells(1).Text
BiologyText = CType(E.Item.Cells(2).Controls(0), TextBox)
Dim Cnn As OleDb.OleDbConnection
Dim Cmd As New OleDb.OleDbCommand
StrCnn = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Server.MapPath("/studentInfo.mdb")
StrSQL = "Update Grade1 Set Biology='" & BiologyText.Text & "' where Name='" & theName & "'"
Cnn = New OleDb.OleDbConnection(StrCnn)
Cmd = New OleDb.OleDbCommand(StrSQL, Cnn)
Cmd.Connection.Open()
Cmd.ExecuteNonQuery()
Cnn.Close()
DataGrid1.EditItemIndex = -1
BiologyDataBind()
End Sub
Sub Cancel_Grid(ByVal Sender As Object, ByVal E As DataGridCommandEventArgs)
Dim sql As String
Dim Ds As New DataSet
Dim Cnn As OleDb.OleDbConnection
Dim Cmd As OleDb.OleDbDataAdapter
Dim StrSQL As String
Dim StrCnn As String
StrCnn = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Server.MapPath("/studentInfo.mdb")
Cnn = New OleDb.OleDbConnection(StrCnn)
StrSQL = "Select ID,Name,Biology from Grade1 order by id"
Cmd = New OleDb.OleDbDataAdapter(StrSQL, Cnn)
Cmd.Fill(Ds, "Grade1")
DataGrid1.EditItemIndex = -1
DataGrid1.DataSource = Ds.Tables("Grade1").DefaultView
DataGrid1.DataBind()
End Sub
Private Sub DataGrid1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub InitializeComponent()
End Sub
End Class