上面是一个执行编辑的语句,出现上面的语句,但是执行成功。报错之后再重新打开,发现修改是成功的,不知道哪里错了,希望各路大神帮忙修改
ceshiTGSxinxi.aspx
请输入您的授课名:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:AccessDataSource ID="AccessDataSource1" runat="server"
DataFile="~/mydatabase.mdb" SelectCommand="SELECT [课程名] FROM [成绩]"></asp:AccessDataSource>
<asp:Button ID="Button1" runat="server" Text="确定" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="AccessDataSource2"
OnRowDataBound="GridView1_RowDataBound" OnRowCancelingEdit="GridView1_RowCancelingEdit"
OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" DataKeyNames="学号">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkCheck" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="学号" HeaderText="学号" ReadOnly="True" SortExpression="学号" />
<asp:BoundField DataField="姓名" HeaderText="姓名" SortExpression="姓名" />
<asp:BoundField DataField="专业" HeaderText="专业" SortExpression="专业" />
<asp:BoundField DataField="成绩" HeaderText="成绩" SortExpression="成绩" />
<asp:CommandField ShowEditButton="True" />
</Columns>
</asp:GridView>
<asp:CheckBox ID="chkAll" runat="server" Text="全选"
oncheckedchanged="chkAll_CheckedChanged" AutoPostBack="true"/>
<asp:AccessDataSource ID="AccessDataSource2" runat="server"
DataFile="~/mydatabase.mdb"
SelectCommand="SELECT [姓名], [学号], [专业], [成绩] FROM [成绩] WHERE ([课程名] = ?)">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox1" Name="课程名" PropertyName="Text"
Type="String" />
</SelectParameters>
</asp:AccessDataSource>
ceshiTGSxinxi.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Data.OleDb;
public partial class ceshiTGSxinxi : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridViewBind();
}
}
public void GridViewBind()
{
try
{
string str_connection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=";
string str_sourcefile = MapPath("~/mydatabase.mdb");
OleDbConnection cnn;
OleDbCommand cmd;
OleDbDataReader datar;
string str_conn = str_connection + str_sourcefile;
cnn = new OleDbConnection(str_conn);
cnn.Open();
string SqlStr = "select 学号,姓名,专业,成绩 from 成绩";
cmd = new OleDbCommand(SqlStr, cnn);
datar = cmd.ExecuteReader();
//DataSet ds = new DataSet();
//cnn.Fill(ds, "成绩");
//GridView1.DataKeyNames = new string[] { "学号" };
绑定Gridview控件
//GridView1.DataSource = ds;//设置数据源,用于填充控件中的项的值列表
cnn.Close();
}
catch (Exception exc)
{
Response.Write(exc.Message);
}
}
protected void chkAll_CheckedChanged(object sender, EventArgs e)
{
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
//建立模板列中CheckBox控件的引用
CheckBox chk = (CheckBox)GridView1.Rows[i].FindControl("chkCheck");
if (chkAll.Checked == true)
{
chk.Checked = true;
}
else
{
chk.Checked = false;
}
}
}
//在GridView控件上.随着光标的移动,高亮显示光标所在的行,主要在GridView控件的RowDataBound事件中实现。代码如下:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#6699ff'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor;");
}
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
//设置GridView控件的编辑项的索引为选择的当前索引
GridView1.EditIndex = e.NewEditIndex;
//数据绑定
GridViewBind();
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
//设置GridView控件的编辑项的索引为-1,即取消编辑
GridView1.EditIndex = -1;
//数据绑定
GridViewBind();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
// 取得编辑行的关键字段的值
string SID = GridView1.DataKeys[e.RowIndex].Value.ToString();
//取得文本框中输入的内容
try
{
string str_connection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=";
string str_sourcefile = MapPath("~/mydatabase.mdb");
OleDbConnection cnn;
OleDbCommand cmd;
OleDbDataReader datar;
string str_conn = str_connection + str_sourcefile;
cnn = new OleDbConnection(str_conn);
cnn.Open();
string grade = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString();
string sqlStr = "select 学号;姓名;专业;成绩 from 成绩";
//之前出错是少了下面这句更新语句
sqlStr = "update 成绩 set 成绩='" + grade + "' where 学号='" + SID + "'";
cmd = new OleDbCommand(sqlStr, cnn);
datar = cmd.ExecuteReader();
//实例化SqlConnection对象
Response.Write(cnn.ToString());
OleDbCommand myCmd = new OleDbCommand(sqlStr, cnn);
myCmd.ExecuteNonQuery();
myCmd.Dispose();
cnn.Close();
}
catch (Exception exc)
{
Response.Write(exc.Message);
}
}
}
ceshiTGSxinxi.aspx
请输入您的授课名:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:AccessDataSource ID="AccessDataSource1" runat="server"
DataFile="~/mydatabase.mdb" SelectCommand="SELECT [课程名] FROM [成绩]"></asp:AccessDataSource>
<asp:Button ID="Button1" runat="server" Text="确定" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="AccessDataSource2"
OnRowDataBound="GridView1_RowDataBound" OnRowCancelingEdit="GridView1_RowCancelingEdit"
OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" DataKeyNames="学号">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkCheck" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="学号" HeaderText="学号" ReadOnly="True" SortExpression="学号" />
<asp:BoundField DataField="姓名" HeaderText="姓名" SortExpression="姓名" />
<asp:BoundField DataField="专业" HeaderText="专业" SortExpression="专业" />
<asp:BoundField DataField="成绩" HeaderText="成绩" SortExpression="成绩" />
<asp:CommandField ShowEditButton="True" />
</Columns>
</asp:GridView>
<asp:CheckBox ID="chkAll" runat="server" Text="全选"
oncheckedchanged="chkAll_CheckedChanged" AutoPostBack="true"/>
<asp:AccessDataSource ID="AccessDataSource2" runat="server"
DataFile="~/mydatabase.mdb"
SelectCommand="SELECT [姓名], [学号], [专业], [成绩] FROM [成绩] WHERE ([课程名] = ?)">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox1" Name="课程名" PropertyName="Text"
Type="String" />
</SelectParameters>
</asp:AccessDataSource>
ceshiTGSxinxi.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Data.OleDb;
public partial class ceshiTGSxinxi : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridViewBind();
}
}
public void GridViewBind()
{
try
{
string str_connection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=";
string str_sourcefile = MapPath("~/mydatabase.mdb");
OleDbConnection cnn;
OleDbCommand cmd;
OleDbDataReader datar;
string str_conn = str_connection + str_sourcefile;
cnn = new OleDbConnection(str_conn);
cnn.Open();
string SqlStr = "select 学号,姓名,专业,成绩 from 成绩";
cmd = new OleDbCommand(SqlStr, cnn);
datar = cmd.ExecuteReader();
//DataSet ds = new DataSet();
//cnn.Fill(ds, "成绩");
//GridView1.DataKeyNames = new string[] { "学号" };
绑定Gridview控件
//GridView1.DataSource = ds;//设置数据源,用于填充控件中的项的值列表
cnn.Close();
}
catch (Exception exc)
{
Response.Write(exc.Message);
}
}
protected void chkAll_CheckedChanged(object sender, EventArgs e)
{
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
//建立模板列中CheckBox控件的引用
CheckBox chk = (CheckBox)GridView1.Rows[i].FindControl("chkCheck");
if (chkAll.Checked == true)
{
chk.Checked = true;
}
else
{
chk.Checked = false;
}
}
}
//在GridView控件上.随着光标的移动,高亮显示光标所在的行,主要在GridView控件的RowDataBound事件中实现。代码如下:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#6699ff'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor;");
}
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
//设置GridView控件的编辑项的索引为选择的当前索引
GridView1.EditIndex = e.NewEditIndex;
//数据绑定
GridViewBind();
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
//设置GridView控件的编辑项的索引为-1,即取消编辑
GridView1.EditIndex = -1;
//数据绑定
GridViewBind();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
// 取得编辑行的关键字段的值
string SID = GridView1.DataKeys[e.RowIndex].Value.ToString();
//取得文本框中输入的内容
try
{
string str_connection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=";
string str_sourcefile = MapPath("~/mydatabase.mdb");
OleDbConnection cnn;
OleDbCommand cmd;
OleDbDataReader datar;
string str_conn = str_connection + str_sourcefile;
cnn = new OleDbConnection(str_conn);
cnn.Open();
string grade = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString();
string sqlStr = "select 学号;姓名;专业;成绩 from 成绩";
//之前出错是少了下面这句更新语句
sqlStr = "update 成绩 set 成绩='" + grade + "' where 学号='" + SID + "'";
cmd = new OleDbCommand(sqlStr, cnn);
datar = cmd.ExecuteReader();
//实例化SqlConnection对象
Response.Write(cnn.ToString());
OleDbCommand myCmd = new OleDbCommand(sqlStr, cnn);
myCmd.ExecuteNonQuery();
myCmd.Dispose();
cnn.Close();
}
catch (Exception exc)
{
Response.Write(exc.Message);
}
}
}