【问题标题】:Getting error "there is no row at position 0"收到错误“位置 0 处没有行”
【发布时间】:2013-06-27 12:32:11
【问题描述】:

请帮我解决这个问题...我收到错误,因为“位置 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;
        }
    }
}

【问题讨论】:

  • 嗯,信息很清楚,不是吗?你不明白什么?如果rep.Tables[0] 不包含任何行,则访问Rows[0] 会引发异常。
  • 在尝试使用之前检查表中是否有任何行!
  • 调试观看
  • evn​​ 如果我将其设置为 rep.tables[1] 它的 swin d 相同的错误
  • 我能得到代码吗...我是新手.. 发现很难 wat u ppl r tryn say

标签: c# asp.net exception


【解决方案1】:

您不是在检查您的表格是否有任何内容。消息很清楚:位置 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...
}

【讨论】:

  • 这很好...谢谢...但是我的网格视图行数据没有显示在另一个页面中..只得到空标签
【解决方案2】:

前面的建议都很好,你应该遵循它。

但是,在我看来,位置 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!

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      检查您的数据表是否为空

      【讨论】:

        猜你喜欢
        • 2015-09-07
        • 1970-01-01
        • 2011-12-09
        • 1970-01-01
        • 1970-01-01
        • 2019-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多