繁体   English   中英

如何使用try和catch处理SelectedIndexOutOfRange?

[英]How to handle SelectedIndexOutOfRange using try and catch?

我在Asp.net中有一个gridview和一个删除按钮。 删除仅在从gridview中选择一行时才有效。 我想通过使其更加用户友好来防止网站崩溃。 因此,如果用户未选择行并按Delete键,它将通过标签通知他们。 它是SelectedVlue还是SelectedRow

这是我尝试的:

if (GridView1.SelectedValue == null)
        {

            int i = GridView1.SelectedIndex;
            myDataSet.Tables["Records"].Rows[i].Delete();

            GridView1.DataSource = myDataSet;
            GridView1.DataBind();
        }
        else
        {
            Label5.Text = "Oops, please select a row";
        }

如果未选择任何行,则SelectedRownull 您还可以使用SelectedIndex != -1 但是无论如何,您正在检查== null而不是!= null这是什么错误的逻辑。

if (GridView1.SelectedRow != null)
{
    // ...
}
else
{
    Label5.Text = "Oops, please select a row";
}

要么

if (GridView1.SelectedIndex != -1)
{
    // ...
}
else
{
    Label5.Text = "Oops, please select a row";
}

您应该使用以下代码替换代码:

        if (GridView1.SelectedRow != null && GridView1.SelectedIndex != -1)
        {
            int i = GridView1.SelectedIndex;
            myDataSet.Tables["Records"].Rows[i].Delete();

            GridView1.DataSource = myDataSet;
            GridView1.DataBind();
        }
        else
        {
            Label5.Text = "Oops, please select a row";
        }

尝试这个:

if(GridView.SelectedRow != null)
{
    // proceed with your action
}
else
{    
    Label5.Text = "Oops, please select a row";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM