请大虾帮帮忙看看代码,实在无法(已折腾较长时间了)在DataGrid中更新数据,先谢为敬!!!

ahongzhen 2003-10-16 08:48:13
我在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
...全文
28 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
webdiyer 2003-10-17
  • 打赏
  • 举报
回复
点“管理”:)
ahongzhen 2003-10-17
  • 打赏
  • 举报
回复
问题已解决,就是Webdiyer(陕北吴旗娃)说的问题,首先对他和zsww()表示谢谢,但我不知如何将分发给他们,谁指教一下。
513 2003-10-16
  • 打赏
  • 举报
回复
我认为,是你的条件有问题,最好用SQl事件分析器先跟综一下生成的SQL语句
zsww 2003-10-16
  • 打赏
  • 举报
回复
同意!!!

-------努力学习 不断实践 虚心讨教--------
webdiyer 2003-10-16
  • 打赏
  • 举报
回复
把你的Page_Load中的 BiologyDataBind() 方法放在 if(!Page.IsPostBack)块中就行了。
Oldman 2003-10-16
  • 打赏
  • 举报
回复
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

MOdify to
Public Sub Page_load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
if not ispostback then
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 if
End Sub

donger2000 2003-10-16
  • 打赏
  • 举报
回复
If Not (IsPostBack)
BiologyDataBind()
End If

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧