无法选择行;指数超出范围

时间:2013-11-15 17:48:47

标签: c# asp.net

我的应用程序出现问题,我正在尝试使用与我的应用程序的其他部分相同的代码用于新页面但我一直收到错误。这就是完全发生的事情:当你点击特定行的选择按钮执行以下代码时,我的网格视图“自动生成选择按钮”设置为“真”:

private void DisplayDetails()
    {
        int rowIndex = dtGridViewList.SelectedIndex;
        GridViewRow Row = dtGridViewList.SelectedRow;

        cmbCompany.SelectedValue = dtGridViewList.DataKeys[rowIndex].Values["CompanyID"].ToString();
        cmbDept.SelectedValue = dtGridViewList.DataKeys[rowIndex].Values["DeptID"].ToString();

        txtProject.Text = Row.Cells[1].Text;
        cmbCompany.SelectedValue = Row.SelectedRow.Cells[2].Text;
        cmbDept.SelectedValue = Row.Cells[3].Text;
        txtStartDate.Text = Row.Cells[4].Text;
        txtEndDate.Text = Row.Cells[5].Text;
        cmbManager.SelectedValue = Row.Cells[6].Text;
        cmbLocation.SelectedValue = Row.Cells[7].Text;
        txtNotes.Text = Row.Cells[6].Text;

    }

此功能在gridviews“SelectedIndexChanged”事件中执行:

protected void dtGridViewList_SelectedIndexChanged(object sender, EventArgs e)
    {
            if (dtGridViewList.SelectedIndex >= 0)
            {
                pnlProjectList.Enabled = true;
                DisplayDetails();
            }
            else
            {
                System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Not Selected!');</SCRIPT>");
            }
    }

然而,代码停止执行:

GridViewRow Row = dtGridViewList.SelectedRow;

错误:

Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

我在其他页面上使用了相同的代码,但它工作得非常好,所以我无法理解为什么它对他的页面不起作用。

1 个答案:

答案 0 :(得分:0)

好的,谢谢大家的贡献,但我设法解决了这个问题。 这就是我之前所做的:

  1. 我使用函数i动态设置gridview的数据源 创建返回数据集并使用第一个 table(dataset.Tables [0])作为gridview的数据源。
  2. 我使用了“编辑列”界面添加了boundfields gridview以图形方式。
  3. 现在碰巧我因为第2步而遇到了这个问题,我仍然不知道为什么,因为我之前已经在其他页面上尝试过它而且效果很好。

    这就是我为解决问题所做的工作:

    1. 我在gridview属性列表中设置了“自动生成列” “真正”。
    2. 我删除了我添加到的所有绑定字段     gridview的。
    3. 在我背后的代码中,我设置了列的可见性     不想表现为“假         (主要是ID列)
    4. 这就是我为解决问题所做的工作,我想先了解一下为什么我会遇到这个问题。