qq_25785383 2015-04-21 15:23 采纳率: 0%
浏览 2905

急!!!!index;索引超出范围。必须为非负

protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "shanchu") //如果单击的是“选修”按钮
{
int index = Convert.ToInt32(e.CommandArgument.ToString()); //取出选修课程所在的行索引

DataKey key = GridView1.DataKeys[index]; //创建DataKey集合接收该行的主键
string stuID = GridView2.DataKeys[index].Values[0].ToString().Trim(); //取出学号主键值
string courceID = GridView1.DataKeys[index].Values[0].ToString().Trim();//取出课程编号主键值
string teaID = GridView1.DataKeys[index].Values[1].ToString().Trim(); //取出教师编号主键值
string userName = Session["userName"].ToString();
string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
string SqlStr = "delete from Elect where stuID='" + userName + "' and courceID='" + courceID + "' and teaID='" + teaID + "'";
try
{
SqlConnection conn = new SqlConnection(connStr);//创建连接对象
if (conn.State.ToString() == "Closed") //如果连接关闭,打开连接
conn.Open();
SqlCommand comm = new SqlCommand(SqlStr, conn);
comm.ExecuteNonQuery(); //执行插入选修课程
comm.Dispose();
if (conn.State.ToString() == "Open") //如果连接打开,关闭连接
conn.Close();
}
catch (Exception ex) //异常处理
{
Response.Write("数据库错误,错误原因:" + ex.Message);
Response.End();
}
}
}

这个Gridview的功能是点击删除按钮后从数据库中删除数据,表中主键分别是stuID,courceID,teaID,属性中的DataKeyNames也已经写上这三个了。编译运行也没问题可是点击按钮触发事件的时候就提醒“ DataKey key = GridView1.DataKeys[index];”这里超出索引,本人C#小白,望各位大大出手相助啊~~~

(之前有人问过,我看了下面的方法也试了下,都不行啊,用了e.Item.ItemIndex他又出现'System.Web.UI.WebControls.GridViewCommandEventArgs' 不包含'Item',···这问题弄了很长时间,真是要疯了)

图是这样的图片说明

  • 写回答

1条回答 默认 最新

  • 232frb 2015-04-21 16:16
    关注

    你调试一下程序 看看此时的index是什么值

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序