要分的请过来 回答100分啊

caihewei 2006-10-27 01:03:37
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 请大家指教
...全文
362 33 打赏 收藏 举报
写回复
33 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
supesa 2006-10-31
  • 打赏
  • 举报
回复
你看看你要的数据字段加在datakeys列表中没
xhmbldsh 2006-10-28
  • 打赏
  • 举报
回复
加入判断:
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
caihewei 2006-10-28
  • 打赏
  • 举报
回复
谢谢大家的回复,我调试成功时用的该代码 cm.Parameters["@Userid"].Value=DataGrid1.Items[e.Item.ItemIndex].Cells[1].ToString();
上面的我 都试了 ,通不过
DePaul 2006-10-27
  • 打赏
  • 举报
回复
cm.Parameters["@Userid"].Value=DataGrid1.DataKeys[(int)e.Item.ItemIndex];//
DataKeys是列吧
i.Item.ItemIndex是行号,把行号放到列里能不报错吗?
呵呵,你好像说测试有通过的时候,那是因为数据量太少没超过你的列数
股神 2006-10-27
  • 打赏
  • 举报
回复
up jf
supesa 2006-10-27
  • 打赏
  • 举报
回复
你把错误信息贴出来,报什么错误?
trainli 2006-10-27
  • 打赏
  • 举报
回复
starsong(意识决定形态) ( ) 信誉:100 Blog
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
}
zg_soso 2006-10-27
  • 打赏
  • 举报
回复
string connString=ConfigurationSettings.AppSettings["ConnectionString"];
你这个连接对吗?我感觉写错了
zg_soso 2006-10-27
  • 打赏
  • 举报
回复
不对,前面看错了
zg_soso 2006-10-27
  • 打赏
  • 举报
回复
supertbt(软件_小菜)
有道理,lz试一下
hegang888888888 2006-10-27
  • 打赏
  • 举报
回复
没数据
starsong 2006-10-27
  • 打赏
  • 举报
回复
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
}
ynx2000 2006-10-27
  • 打赏
  • 举报
回复
private void DataGrid1_UpdateCommand_1(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{

if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
}
请你加上这个If语句看看呀~因该就可以解决你上面的问题了呀,
caihewei 2006-10-27
  • 打赏
  • 举报
回复
private void DataGrid1_EditCommand_1(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=(int)e.Item.ItemIndex;
BindGrid();

}
编辑时候的代码
MoonQQ 2006-10-27
  • 打赏
  • 举报
回复
cm.Parameters.Add(new SqlParameter("@branch",SqlDbType.Int,10));
改成:
cm.Parameters.Add(new SqlParameter("@branch",SqlDbType.Int,4));
再看看其他的和数据库是否吻合
supesa 2006-10-27
  • 打赏
  • 举报
回复
DataGrid1.DataKeys[Index]是一个对象
你要取他的值应该用
DataGrid1.DataKeys[Index].value
如果是多datakey的情况
应该用
DataGrid1.DataKeys[Index].values["DataKeyName"]
或者
DataGrid1.DataKeys[Index].values[DataKeyIndex]

明白?
ken8544 2006-10-27
  • 打赏
  • 举报
回复
顶一下.不知道 看不出
gauzxj 2006-10-27
  • 打赏
  • 举报
回复
偶也要
Fjzminghui 2006-10-27
  • 打赏
  • 举报
回复
接分
jbhou 2006-10-27
  • 打赏
  • 举报
回复
up!
加载更多回复(13)
相关推荐
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2006-10-27 01:03
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。