1

我有带有 selectedindexchanged 事件和 3 个按钮的 Gridview。单击其中一个按钮时,我使用 GridView1.SelectedRow.RowIndex来选择选定的行。

在此处输入图像描述

当用户单击一行时,这可以正常工作。但问题是当没有选择行并且在我的代码中调用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

4 回答 4

2

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

         <asp:HyperLinkField 
                        Text="Add News"
                        HeaderText="" 
    DataNavigateUrlFormatString="~/AddNews.aspx?Parameter=/{0}" 
                        DataNavigateUrlFields="NewsID" >
                        <ItemStyle HorizontalAlign="Left" />
                    </asp:HyperLinkField>
于 2013-04-10T04:10:45.583 回答
1
protected void AddNews_Click(object sender, EventArgs e)
{
    int i = GridView1.SelectedRow.RowIndex;
    if(i>= 0)
    {
        Response.Redirect("~/AddNews.aspx?Parameter=" + index);
    }
}
于 2013-04-10T06:20:48.280 回答
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);
    }
}
于 2013-04-10T04:09:27.860 回答
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;
}
于 2013-04-10T01:40:14.010 回答