[英]Getting error "there is no row at position 0"
請幫我解決這個問題...我收到錯誤,因為“位置 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;
}
}
}
您沒有檢查您的表格是否有任何內容。 消息很明確:位置 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...
}
前面的建議都很好,你應該遵循它。
但是,在我看來很明顯,位置 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!
在訪問任何東西之前,總是先檢查項目。 這樣做之后,如果仍然發生這種情況,請檢查列名是否准確? 例如, "TaskID"
真的是"TaskId"
並且索引失敗? 最后這些項目可以為空嗎? 如果是這樣,在空字段上調用 ToString() 不是您想要的。
檢查您的數據表是否為空
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.