6

请帮我解决这个问题...我收到错误,因为“位置 0 没有行”,“用户代码未处理索引超出范围异常”

下面是我的代码

protected void Page_Load(object sender, EventArgs e)
{
    MTMSService obj = new MTMSService();
    DBAccess db = new DBAccess();
    {
        MTMSDTO objc = new MTMSDTO();
        {
            objc.TaskID = Convert.ToInt32(Session["TaskID"]);
            DataSet rep = obj.GetReports(objc);
            DataView Rprts = new DataView();
            Rprts.Table = rep.Tables[0];

            LblTaskID.Text = rep.Tables[0].Rows[0]["TaskID"].ToString();
            LblTaskName.Text = rep.Tables[1].Rows[0]["TaskName"].ToString();
            LblDueDate.Text = rep.Tables[2].Rows[0]["DueDate"].ToString();
            LblDescription.Text = rep.Tables[3].Rows[0]["Description"].ToString();
            LblAssignBy.Text = rep.Tables[4].Rows[0]["AssignBy"].ToString();
            LblStatus.Text = rep.Tables[5].Rows[0]["Status"].ToString();
            LblPercentageComplete.Text = 
                    rep.Tables[6].Rows[0]["PercentageComplete"].ToString();

            LblTaskName.Visible = true;
            LblAssignBy.Visible = true;
            LblDescription.Visible = true;
            LblDueDate.Visible = true;
            LblStatus.Visible = true;
            LblPercentageComplete.Visible = true;
            LblAssignTo.Visible = false;
        }
    }
}
4

4 回答 4

12

您没有检查您的表格是否有任何内容。消息很清楚:位置 0 处没有行。

异常可能是在这一行上抛出的,或者在它后面的一个:

LblTaskID.Text = rep.Tables[0].Rows[0]["TaskID"].ToString();

您应该在尝试从中获取数据之前验证行是否存在。类似于以下内容:

var table = rep.Tables[0];
if (table.Rows.Count > 0){
    // Fetch the data... 
}
else
{
    // Handle missing data in an appropriate way...
}
于 2013-06-27T12:36:28.390 回答
4

早期的建议都很好,你应该遵循它。

然而,在我看来,位置 0 处没有行的原因是您正在查看错误的表格。我严重怀疑您在一个表中有 id,在另一个表中有 name,等等,但是您正在为每条数据索引到不同的表。

rep.Tables[1]
rep.Tables[2]
rep.Tables[3]
rep.Tables[4]
rep.Tables[5]
rep.Tables[6]

都应该是

rep.Tables[0]

您肯定只有一张桌子,但正在查看表格 0 到表格 6!

于 2013-06-27T13:06:28.540 回答
0

在访问任何东西之前,请务必先检查项目。完成此操作后,如果仍然发生这种情况,请检查列名是否准确?例如"TaskID"真的"TaskId"是索引失败了吗?最后这些项目可以为空吗?如果是这样,在空字段上调用 ​​ToString() 不是您想要的。

于 2013-06-27T12:36:48.463 回答
0

检查您的数据表是否为空

于 2019-11-23T09:06:55.377 回答