簡體   English   中英

出現錯誤“位置 0 處沒有行”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM