datagrid的编辑时遇到的问题。更新的时候,代码是这样的:
SqlConnection cn= new SqlConnection (MyConnString);
cn.Open ();
string upStr="UPDATE data SET 资料编号=@资料编号,提供人=@提供人,资料载体=@资料载体,分类密级=@分类密级,资料说明=@资料说明 WHERE 资料名称=@资料名称";
SqlCommand upCmd=new SqlCommand(upStr,cn);
upCmd.Parameters.Add("@资料编号",SqlDbType.NVarChar,50);
upCmd.Parameters.Add("@提供人",SqlDbType.Char,10);
upCmd.Parameters.Add("@资料载体",SqlDbType.Char,10);
upCmd.Parameters.Add("@分类密级",SqlDbType.SmallInt,2);
upCmd.Parameters.Add("@资料说明",SqlDbType.NVarChar,1000);
upCmd.Parameters.Add("@资料名称",SqlDbType.NVarChar,50);
if(e.Item.ItemType==ListItemType.EditItem)
{
this.Label1.Text=((TextBox) e.Item.Cells[2].Controls[0]).Text.ToString();
}
运行提示说:指定的参数已超出有效值的范围,参数名:index 本没有那个if(e.Item.ItemType==ListItemType.EditItem)
语句,但从网上找到一个帖子说是需要if一下,加上后一开始是好的,可是现在又不对了。。奇怪不知道怎么搞的。。哪位高手能帮我看一下么。谢谢!
SqlConnection cn= new SqlConnection (MyConnString);
cn.Open ();
string upStr="UPDATE data SET 资料编号=@资料编号,提供人=@提供人,资料载体=@资料载体,分类密级=@分类密级,资料说明=@资料说明 WHERE 资料名称=@资料名称";
SqlCommand upCmd=new SqlCommand(upStr,cn);
upCmd.Parameters.Add("@资料编号",SqlDbType.NVarChar,50);
upCmd.Parameters.Add("@提供人",SqlDbType.Char,10);
upCmd.Parameters.Add("@资料载体",SqlDbType.Char,10);
upCmd.Parameters.Add("@分类密级",SqlDbType.SmallInt,2);
upCmd.Parameters.Add("@资料说明",SqlDbType.NVarChar,1000);
upCmd.Parameters.Add("@资料名称",SqlDbType.NVarChar,50);
if(e.Item.ItemType==ListItemType.EditItem)
{
this.Label1.Text=((TextBox) e.Item.Cells[2].Controls[0]).Text.ToString();
}
运行提示说:指定的参数已超出有效值的范围,参数名:index 本没有那个if(e.Item.ItemType==ListItemType.EditItem)
语句,但从网上找到一个帖子说是需要if一下,加上后一开始是好的,可是现在又不对了。。奇怪不知道怎么搞的。。哪位高手能帮我看一下么。谢谢!
this.Label1.Text=((TextBox) e.Item.Cells[2].Controls[0]).Text.ToString();
是不是变换了DataGrid的列顺序或,删除了某一列,Cells[2]已经不存在了
upCmd.Parameters[0].Value =((TextBox) e.Item.Cells[2].Controls[0]).Text.ToString();
upCmd.Parameters[1].Value = ...
如果用SQL语句:
SqlConnection cn= new SqlConnection (MyConnString);
cn.Open ();
string upStr="UPDATE data SET 资料编号=@资料编号,提供人=@提供人,资料载体=@资料载体,分类密级=@分类密级,资料说明=@资料说明 WHERE 资料名称=@资料名称";
SqlCommand upCmd=new SqlCommand(upStr,cn);
upCmd.CommandType = sqltext;
cmd的执行就可以了
如果你用的存储过程:
upCmd.Parameters.Add("@资料编号",SqlDbType.NVarChar,50);
upCmd.Parameters.Add("@提供人",SqlDbType.Char,10);
upCmd.Parameters.Add("@资料载体",SqlDbType.Char,10);
upCmd.Parameters.Add("@分类密级",SqlDbType.SmallInt,2);
upCmd.Parameters.Add("@资料说明",SqlDbType.NVarChar,1000);
upCmd.Parameters.Add("@资料名称",SqlDbType.NVarChar,50); 传入存储过程名,传入参数,然后根据返回值判断执行情况
即可。 桂林电子科技大学计算机系
信息管理与信息系统
2006.4.26
按照你说的。该怎么改一下呢?