private void DataGrid1_UpdateCommand_1(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string connString=ConfigurationSettings.AppSettings["ConnectionString"];
SqlConnection cn=new SqlConnection(connString);
SqlCommand cm=new SqlCommand("updateusers",cn);
cm.CommandType=CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter("@Userid",SqlDbType.Char,10));
cm.Parameters.Add(new SqlParameter("@name",SqlDbType.VarChar,10));
cm.Parameters.Add(new SqlParameter("@branch",SqlDbType.Int,10));
cm.Parameters.Add(new SqlParameter("@tel",SqlDbType.VarChar,10));
cm.Parameters.Add(new SqlParameter("@email",SqlDbType.VarChar,10));
String colvalue=e.Item.Cells[1].Controls[0].ToString();
cm.Parameters["@name"].Value=colvalue;
colvalue=e.Item.Cells[2].Controls[0].ToString();
cm.Parameters["@branch"].Value=colvalue;
colvalue=e.Item.Cells[3].Controls[0].ToString();
cm.Parameters["@tel"].Value=colvalue;
colvalue=e.Item.Cells[4].Controls[0].ToString();
cm.Parameters["@email"].Value=colvalue;
cm.Parameters["@Userid"].Value=DataGrid1.DataKeys[(int)e.Item.ItemIndex];//出错地方
cm.Connection.Open();
try
{
cm.ExecuteNonQuery();
Label3.Text="success";
DataGrid1.EditItemIndex=-1;
}
catch(SqlException)
{
Label3.Text="no success";
}
cm.Connection.Close();
BindGrid();
}
System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index 请大家指教
{
string connString=ConfigurationSettings.AppSettings["ConnectionString"];
SqlConnection cn=new SqlConnection(connString);
SqlCommand cm=new SqlCommand("updateusers",cn);
cm.CommandType=CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter("@Userid",SqlDbType.Char,10));
cm.Parameters.Add(new SqlParameter("@name",SqlDbType.VarChar,10));
cm.Parameters.Add(new SqlParameter("@branch",SqlDbType.Int,10));
cm.Parameters.Add(new SqlParameter("@tel",SqlDbType.VarChar,10));
cm.Parameters.Add(new SqlParameter("@email",SqlDbType.VarChar,10));
String colvalue=e.Item.Cells[1].Controls[0].ToString();
cm.Parameters["@name"].Value=colvalue;
colvalue=e.Item.Cells[2].Controls[0].ToString();
cm.Parameters["@branch"].Value=colvalue;
colvalue=e.Item.Cells[3].Controls[0].ToString();
cm.Parameters["@tel"].Value=colvalue;
colvalue=e.Item.Cells[4].Controls[0].ToString();
cm.Parameters["@email"].Value=colvalue;
cm.Parameters["@Userid"].Value=DataGrid1.DataKeys[(int)e.Item.ItemIndex];//出错地方
cm.Connection.Open();
try
{
cm.ExecuteNonQuery();
Label3.Text="success";
DataGrid1.EditItemIndex=-1;
}
catch(SqlException)
{
Label3.Text="no success";
}
cm.Connection.Close();
BindGrid();
}
System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index 请大家指教
解决方案 »
- 做好的ASP.NET应用程序复制后再打开提示“没有将对象引用设置到对象实例”,这是什么原因?
- 怎么自己写组件啊,帮帮我 asp.net
- 关于将数据库中的数据存入Hashtable1,请大侠们看看我的代码那里不正确!!!
- 未将对象引用设置到对象的实例。?????不太明白,请大家帮帮忙!!
- 【VS2003】如何在DataGrid模板列的TextBox控件中实现TextChanged事件
- ————datalist中内容的滚动显示,谢谢
- 为什么 @@cursor_rows 总返回 -1 呢?
- 请高人给个dataset分页的例子好吗,谢谢了。。。。
- 程序员如何提高英语
- 能否由一个变量决定一个数组的大小?急~
- 中文乱码,求救!
- datagrid的超级链接列绑定两个字段的问题(急!!!)
如果表里没有数据,你想想它能不出错吗?
给分!
//不应该有问题
//你先看看(int)e.Item.ItemIndex这个是多少
//在看看此时DataGrid1的count
你要取他的值应该用
DataGrid1.DataKeys[Index].value
如果是多datakey的情况
应该用
DataGrid1.DataKeys[Index].values["DataKeyName"]
或者
DataGrid1.DataKeys[Index].values[DataKeyIndex]明白?
改成:
cm.Parameters.Add(new SqlParameter("@branch",SqlDbType.Int,4));
再看看其他的和数据库是否吻合
{
DataGrid1.EditItemIndex=(int)e.Item.ItemIndex;
BindGrid();
}
编辑时候的代码
{ if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
}
请你加上这个If语句看看呀~因该就可以解决你上面的问题了呀,
{
}
有道理,lz试一下
你这个连接对吗?我感觉写错了
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
}
DataKeys是列吧
i.Item.ItemIndex是行号,把行号放到列里能不报错吗?
呵呵,你好像说测试有通过的时候,那是因为数据量太少没超过你的列数
上面的我 都试了 ,通不过
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)