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是什么值

    评论

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决