string id = GridView1.DataKeys[GridView1.SelectedIndex].Value.ToString();
索引超出范围。必须为非负值并小于集合大小。但是我取GridView1.SelectedIndex的时候是正常的
DataKeyNames="id"这个也设置了为什么出错呢

解决方案 »

  1.   

    SelectedIndex从0开始!
    也说不清什么总是,不好判断!
      

  2.   

    跟上下文没什么分别吧
    GridView1填充是正常的
    GridView1.SelectedIndex取出来是正确的
    也设置了DataKeyNames="id"问题是GridView1.DataKeys这里无论索引是多少也出错
    索引超出范围。必须为非负值并小于集合大小
      

  3.   

    GridView1.DataKeys[0]也是相同的错误
    那是不是说数据没有填充到DataKeys呢
    但我已经设置了DataKeyNames="id"的啊
      

  4.   

    GridView1.SelectedIndex是不是为-1了?
      

  5.   

    GridView1.SelectedIndex是正确的
    问题不是这里
    而是DataKeys
    但我不知道什么问题
    郁闷
      

  6.   

    难道不是设置了DataKeyNames="id"就可以用DataKeys的吗
    GridView就这样而已啊            <asp:GridView ID="GridView1" runat="server" AutoGenerateSelectButton="True" DataKeyNames="id" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
                </asp:GridView>
      

  7.   

    SqlDataAdapter dataAdapter = new SqlDataAdapter(commandString, connectionString);
            DataSet dataSet = new DataSet();
            dataAdapter.Fill(dataSet);
            GridView1.DataSource = dataSet.Tables[0];
            GridView1.DataBind();
      

  8.   

    DataKeys 这个中的索引值和SelectedIndex是两回事吧