我的后台数据表结构是这样的 
表 学生课程记录表 
id 学号 课程编号 
1 510331101 1111 
表 课程信息表 
已选人数 课程编号 
3        1111 
目的是在删除学生课程记录表中这条记录然后让课程信息表的已选人数字段-1 
触发器为 
CREATE TRIGGER 课程信息表1 ON [dbo].[学生课程记录表] 
FOR  DELETE 
AS 
begin 
update 课程信息表 set 已选人数=已选人数-1 from (select 课程编号 from deleted) d where 课程信息表.课程编号=d.课程编号 
end 在查询分析器里执行没问题但是我作为网站的后台数据库在前台页面里的gridview控件里删除记录就会出现这个错误: 
指定的参数已超出有效值的范围。 
参数名: value 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。 
参数名: value 源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: 
[ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。 
参数名: value] 
  System.Web.UI.WebControls.GridView.set_SelectedIndex(Int32 value) +1522711 
  System.Web.UI.WebControls.GridView.HandleDeleteCallback(Int32 affectedRows, Exception ex) +354 
  System.Web.UI.DataSourceView.Delete(IDictionary keys, IDictionary oldValues, DataSourceViewOperationCallback callback) +123 
  System.Web.UI.WebControls.GridView.HandleDelete(GridViewRow row, Int32 rowIndex) +927 
  System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +1134 
  System.Web.UI.WebControls.GridView.RaisePostBackEvent(String eventArgument) +199 
  System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7 
  System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11 
  System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +177 
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1746 
我是用visual studio 2008  (C#)语言做的网站后台数据库是sql2000 应该是删除记录后页面刷新出现错误应如何解决 
请帮忙解决下!!谢谢!!

解决方案 »

  1.   

    看这里:
    http://www.itstrike.cn/Home.mvc/Search?key=gridview
      

  2.   

        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                
                SqlConnection Con1 = new SqlConnection("Server=(local);Database=StudentManageSys;UID=sa;Pwd=861022;");
               
                string sql5 = "update 课程信息表 set 已选人数=已选人数-1 where 课程编号='" + Session["ccno"].ToString() + "'";            SqlCommand addCommand6 = new SqlCommand(sql5, Con1);
                Con1.Open();
                addCommand6.ExecuteNonQuery();
                Con1.Close();        }
            catch (Exception)
            {
                String sScript = "";
                sScript += "<script language=javascript>";
                sScript += "  window.opener.location.reload();";
                sScript += "  window.close();</script>";
            }
        }
      

  3.   

    触发器我不是很懂,你这是FOR  DELETE,应该是删除时触发吧
    删除了还怎么修改啊?
      

  4.   

    这个问题很好解决:在你的触发器里,begin后添加语句:set nocount on;在end前添加set nocount off即可。