我有Gridview with selectedindexchanged事件和3个按钮。当单击其中一个按钮时,我使用 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);
}
答案 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;
}