我利用数据源在Gridview中绑定了几个字段,我想在点击编辑后,更改内容,同时数据库的字段内容也改变,但是我运行后报错:除非指定了 UpdateCommand,否则数据源“SqlDataSource1”不支持更新操作。
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = new SqlConnection ("Server=.;user id=sa;password=;DataBase=Test2");
cmd.CommandText = "update OrderDetails set 顾客ID=@CustomID where 订单ID=@OrderID"; SqlParameter prmCustomID = new SqlParameter("@CustomID", SqlDbType.NVarChar, 30);
prmCustomID.Direction = ParameterDirection.Input;
cmd.Parameters.Add(prmCustomID); //SqlParameter prmStaffID = new SqlParameter("@StaffID", SqlDbType.NVarChar, 30);
//prmStaffID.Direction = ParameterDirection.Input;
//cmd.Parameters.Add(prmStaffID); //SqlParameter prmOrderTime = new SqlParameter("@OrderTime", SqlDbType.NVarChar, 30);
//prmOrderTime.Direction = ParameterDirection.Input;
//cmd.Parameters.Add(prmOrderTime); SqlParameter prmOrderID = new SqlParameter("@OrderID", SqlDbType.NVarChar, 30);
prmOrderID.Direction = ParameterDirection.Input;
cmd.Parameters.Add(prmOrderID); prmCustomID.Value = GridView2.Rows[0].Cells[3].Text.ToString();
//prmStaffID.Value = GridView2.Rows[0].Cells[4].Text.ToString();
prmOrderID.Value = GridView2.Rows[0].Cells[1].Text;
cmd.Connection.Open();
//cmd.ExecuteNonQuery();
cmd.Connection.Close();
cmd.Connection.Dispose();
cmd.Dispose();
这个是我写的代码大家帮帮我,找哈看是哪里错了
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = new SqlConnection ("Server=.;user id=sa;password=;DataBase=Test2");
cmd.CommandText = "update OrderDetails set 顾客ID=@CustomID where 订单ID=@OrderID"; SqlParameter prmCustomID = new SqlParameter("@CustomID", SqlDbType.NVarChar, 30);
prmCustomID.Direction = ParameterDirection.Input;
cmd.Parameters.Add(prmCustomID); //SqlParameter prmStaffID = new SqlParameter("@StaffID", SqlDbType.NVarChar, 30);
//prmStaffID.Direction = ParameterDirection.Input;
//cmd.Parameters.Add(prmStaffID); //SqlParameter prmOrderTime = new SqlParameter("@OrderTime", SqlDbType.NVarChar, 30);
//prmOrderTime.Direction = ParameterDirection.Input;
//cmd.Parameters.Add(prmOrderTime); SqlParameter prmOrderID = new SqlParameter("@OrderID", SqlDbType.NVarChar, 30);
prmOrderID.Direction = ParameterDirection.Input;
cmd.Parameters.Add(prmOrderID); prmCustomID.Value = GridView2.Rows[0].Cells[3].Text.ToString();
//prmStaffID.Value = GridView2.Rows[0].Cells[4].Text.ToString();
prmOrderID.Value = GridView2.Rows[0].Cells[1].Text;
cmd.Connection.Open();
//cmd.ExecuteNonQuery();
cmd.Connection.Close();
cmd.Connection.Dispose();
cmd.Dispose();
这个是我写的代码大家帮帮我,找哈看是哪里错了
解决方案 »
- 验证视图MAC失败 Validation of ViewState MAC Failed ,期待大侠能帮忙下,这个问题困扰了很久了
- 字符串输入问题
- 跪求各位高手,解决关于MSChart控件做统计图的问题
- ASP.NET读取Oracle数据库字符串显示问题
- 请问谁能告诉我一下如何将 Web程序 嵌入游戏客户端
- 都是些小白菜,昨天问了一个用FileStream导出数据到Excel的,全都说错了。
- 在SQL Server中怎么才能把一个字段的值分开成为两列.在分别邦定到DataGrid上的列.
- 未能启动 aspnet_wp.exe,原是.....
- 我有一共享打开数据库类,第一次打开时没有错误,以后打开就出现错误,请问高手怎样纠正,谢谢
- wpf mvvm技术点,return后面啥意思,请大神
- xslt匹配问题,马上给分
- 一个关于updatepanel的问题,哪位大侠提示下谢谢
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString=" <%$ ConnectionStrings:ConnectionString %>"
SelectCommand="" InsertCommand ="" UpdateCommand =""> </asp:SqlDataSource>
SelectCommand="SELECT [订单ID], [顾客ID], [员工ID], [订货日期], [数量] FROM [OrderDetails]" UpdateCommand ="Update OrderDetails SET 顾客ID=? WHERE 订单ID=@OrderID">
</asp:SqlDataSource>
第 1 行: '?' 附近有语法错误。UpdateCommand属性也设了, 这个错误我找不出!
使用SqlDataSource的向导,自动生成UpdateCommand,然后你自己再修改
楼主 写法有点重合
其实 你可以不用写代码就可以编辑
数据源配置好就可以啦!
1:
楼主的思路有点乱
你绑定的时候 用的是数据源
但是更新的时候其实可以直接利用数据源控件的(楼主应该去看看数据源控件的作用)
但是楼主没有 而是选择自己写
cmd.CommandText = "update OrderDetails set 顾客ID=@CustomID where 订单ID=@OrderID";
gridview 里面设置datakeyNames 没有
更新的话你没有必要prmOrderID.Value = GridView2.Rows[0].Cells[1].Text;
//这样给他赋值是错误的 prmOrderID.Value=GridView1.DatakeysName["OrderID"];
楼主应该明白 where 子句里面的值应该是老值
但是你这样进入编辑状态后允许重新输入一个值
所以是错误的