如何处理位置错误消息中没有行

时间:2015-08-23 10:06:49

标签: c# asp.net if-statement

我收到错误:

  

第4位没有行

这意味着DataTable没有我指定的行号。

以下是一个例子:

protected void btnNext_Click1(object sender, EventArgs e)
{
    if (Session["ClickCount"] == null)
        Session["ClickCount"] = 0;

    int ClickCount = Convert.ToInt32(Session["ClickCount"]) + 1;
    Session["ClickCount"] = ClickCount;

    DAL.TicketsDataSetTableAdapters.TicketDetailsTableAdapter eobj = new DAL.TicketsDataSetTableAdapters.TicketDetailsTableAdapter();
    DataTable dt = new DataTable();
    dt = eobj.GetTicketUpdates(txtSupportRef.Text);

    if (ClickCount > dt.Rows.Count)
    {
        // HOW DO WE HANDLE THE ERROR?
    }
    txtNextStep.Text = dt.Rows[ClickCount - 1]["NextStep"].ToString();
}

我的DataTable中有3行,如果再次单击该按钮,则会显示上面的错误消息。

处理此错误消息的最佳方法是什么?

我应退出if statement,然后向用户显示消息吗?

3 个答案:

答案 0 :(得分:1)

您可以禁用 btnNext按钮:

if (ClickCount > dt.Rows.Count)
{
    btnNext.Enabled= false;
    // Also with a message
}
else
{
    btnNext.Enabled= true;
    txtNextStep.Text = dt.Rows[ClickCount - 1]["NextStep"].ToString();
}

答案 1 :(得分:1)

您正在使用ClickCount检查if (ClickCount > dt.Rows.Count)但访问循环外的值,请按以下方式使用:

if (ClickCount < dt.Rows.Count)
    {
       txtNextStep.Text = dt.Rows[ClickCount - 1]["NextStep"].ToString();
    }
   else{btnNext.Enabled=false;}

答案 2 :(得分:0)

在使用“Clickcount”

之前进行适当的检查
if (ClickCount > dt.Rows.Count)
{
    // show a proper message to user
}
else if (ClickCount < dt.Rows.Count)
{
    //
}
else
{
    //
}