Csharp/C#教程:得到错误“位置0没有行”分享


得到错误“位置0没有行”

请帮我解决这个问题…我收到的错误是“0号位没有行”,“索引超出范围exception是用户代码无法解决的”

以下是我的代码

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; } } } 

你没有检查你的表是否有任何内容。 消息很明确 – 位置0没有行。它可能被抛出这一行,或者跟随它:

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

在尝试从中获取数据之前,应检查是否存在行。 类似的东西(在使用之前validation语法 – 这根本没有测试过):

 var table = rep.Tables[0]; if (table.Rows.Count > 0){ // Fetch the data... } else { // Handle missing data in an appropriate way... } 

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

然而,对我来说很明显,在0位没有行的原因是你正在查看错误的表格。 我严重怀疑你在一个表中有id,在另一个表中有名,等等,但是你为每个数据索引到一个不同的表。

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

应该都是

 rep.Tables[0] 

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

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

上述就是C#学习教程:得到错误“位置0没有行”分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1045275.html

(0)
上一篇 2022年2月5日
下一篇 2022年2月5日

精彩推荐