除VS2010出错 非指定了 UpdateCommand,否则数据源“AccessDataSource2”不支持更新操作

来源:互联网 发布:mac电脑忘记开机密码 编辑:程序博客网 时间:2024/05/21 14:45
上面是一个执行编辑的语句,出现上面的语句,但是执行成功。报错之后再重新打开,发现修改是成功的,不知道哪里错了,希望各路大神帮忙修改
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);
            }
    }
}

0 0
原创粉丝点击