使用GridView1_SelectedIndexChanged时出错

时间:2013-04-10 00:01:42

标签: c# asp.net events gridview

我有Gridview with selectedindexchanged事件和3个按钮。当单击其中一个按钮时,我使用 GridView1.SelectedRow.RowIndex 以获取所选行。

enter image description here

当用户点击一行时,此功能正常。但问题是当没有选择行并且在我的代码中调用 GridView1.SelectedRow.RowIndex 。 这会给出错误:对象引用未设置为对象的实例。

我有什么想法可以检查GridView1.SelectedRow.RowIndex是否有值或如何禁用它直到选择一行?

以下是添加按钮的代码:

protected void AddNews_Click(object sender, EventArgs e)
{
    rowIndex = GridView1.SelectedRow.RowIndex;
    Response.Redirect("~/AddNews.aspx?Parameter=" + rowIndex);
}

4 个答案:

答案 0 :(得分:2)

您可以将NewsID绑定到超链接:

         <asp:HyperLinkField 
                        Text="Add News"
                        HeaderText="" 
    DataNavigateUrlFormatString="~/AddNews.aspx?Parameter=/{0}" 
                        DataNavigateUrlFields="NewsID" >
                        <ItemStyle HorizontalAlign="Left" />
                    </asp:HyperLinkField>

答案 1 :(得分:1)

protected void AddNews_Click(object sender, EventArgs e)
{
    int index = GridView1.SelectedIndex;
    if(index >= 0) // if -1 no selection 
    {
        Response.Redirect("~/AddNews.aspx?Parameter=" + index);
    }
}

答案 2 :(得分:1)

protected void AddNews_Click(object sender, EventArgs e)
{
    int i = GridView1.SelectedRow.RowIndex;
    if(i>= 0)
    {
        Response.Redirect("~/AddNews.aspx?Parameter=" + index);
    }
}

答案 3 :(得分:0)

看起来你得到NullReferenceException,因为GridView1.SelectedRow为空。在尝试使用之前,请验证GridView1.SelectedRow 不是为空。

if(GridView1.SelectedRow != null)
{
     // A row is selected, SelectedRow is not null so safe to access RowIndex...
     int rowIndex = GridView1.SelectedRow.RowIndex;
}

或者,您可以使用SelectedRowIndex成员,在未选择任何内容时返回-1

if(GridView1.SelectedIndex >= 0)
{
     // A row is selected, get SelectedRowIndex...
     int rowIndex = GridView1.SelectedIndex;
}