我把字段subno设置为readonly=true后点击更新数据不变。 
UpdateCommand="UPDATE sn SET nam = @nam, no = @no, dep = @dep WHERE (subno = @subno)" 
在网上查找有人说设置OldValuesParameterFormatString="original_{0} 然后命令改成 
UpdateCommand="UPDATE sn SET nam = @nam, no = @no, dep = @dep WHERE (subno = @original_subno)" OldValuesParameterFormatString="original_{0} 
参数改成 
<asp:Parameter Name="original_subno" /> 但我试了还是无效。 请高手给我讲解讲解啊。不胜感激!

解决方案 »

  1.   

    你先把
    UPDATE   sn   SET   nam   =   @nam,   no   =   @no,   dep   =   @dep   WHERE   (subno   =   @subno)
    这段SQL语句的每个变量给个值 ,在查询分析器中试试会不会更新 ,如果SQL语句没有问题,再查看代码
      

  2.   

    这条sql语句是没问题的,而且如果我把subno设置为readonly=false就可以正常更新。
      

  3.   

    这让我想起了另外一个问题。
    在 gridview 中如果隐藏了某一列,
    那这一列实际上在绑定后就完全不存在了。
    这点有别于1.1下的 datagird.
    所以我想,这个问题可能和隐藏列的类似。
    对付gridview 隐藏列我们有个重要的方法,看看能不能对你这个问题有点帮助。    如果在DataSet中想在画面上隐藏的列的为: COLUMN        this.gdv.DataSource = dstGdv;
            // 设定隐藏列
            this.gdv.DataKeyNames = new string[] { "COLUMN" };
            this.gdv.DataBind();
             // 取得隐藏列的值
             string strValue = gdv.DataKeys[i]["COLUMN"].ToString();