2015-01-21 23 views
0

我將向您展示我的代碼並在下面進行解釋。將整行添加到DataSet中的一個

for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 
       { 
        dsSaved = manageSavedjob.GetJobByID(Convert.ToInt32(ds.Tables[0].Rows[i]["SavedJobID"].ToString())); 

        dt.Columns.Add("JobID"); 
        dt.Columns.Add("JobConID"); 
        dt.Columns.Add("jobTitle"); 
        dt.Columns.Add("jobInfo"); 
        dt.Columns.Add("priceFrom"); 
        dt.Columns.Add("priceTo"); 
        dt.Columns.Add("dateSent"); 
        dt.Columns.Add("lastUpdated"); 
        dt.Columns.Add("postUser"); 
        dt.Columns.Add("address"); 
        dt.Columns.Add("workers"); 


        workRow[0] = Convert.ToInt32(dsSaved.Tables[0].Rows[0]["JobID"].ToString()); 
        workRow[1] = Convert.ToInt32(dsSaved.Tables[0].Rows[0]["JobConID"].ToString()); 
        workRow[2] = dsSaved.Tables[0].Rows[0]["jobTitle"].ToString(); 
        workRow[3] = dsSaved.Tables[0].Rows[0]["jobInfo"].ToString(); 
        workRow[4] = Convert.ToInt32(dsSaved.Tables[0].Rows[0]["priceFrom"].ToString()); 
        workRow[5] = Convert.ToInt32(dsSaved.Tables[0].Rows[0]["priceTo"].ToString()); 
        workRow[6] = dsSaved.Tables[0].Rows[0]["dateSent"].ToString(); 
        workRow[7] = dsSaved.Tables[0].Rows[0]["lastUpdated"].ToString(); 
        workRow[8] = dsSaved.Tables[0].Rows[0]["postUser"].ToString(); 
        workRow[9] = dsSaved.Tables[0].Rows[0]["address"].ToString(); 
        workRow[10] = Convert.ToInt32(dsSaved.Tables[0].Rows[0]["workers"].ToString()); 



        dt.Rows.Add(workRow); 
        dsDisplay.Tables.Add(dt); 

        count = dsDisplay.Tables[0].Rows.Count; 
        dt = new DataTable(); 
        workRow = dt.NewRow(); 
       } 

基本上我想要做的就是收到一整排裝滿了來自數據庫的詳細信息(見dsSaved),並在得到那個,將其添加到workRow {DataRow的workRow = dt.NewRow( ); }。然後我將它放入數據表中,並將數據表添加到@dsDisplay。然後重新啓動workRow和@dt。


問題是這樣的。 @dsDisplay似乎被刪除並且每次@i都會從廢品中刪除。我試圖將行添加到@dsDisplay,而不是用新行重新創建它。請幫助。

+0

;在每次迭代中添加新的數據表?您需要創建dt並在循環之前將其添加到dsDisplay。在循環中,您需要向dt添加新行。 [拿起例子](https://msdn.microsoft.com/en-us/library/system.data.datatable.rows(v = vs.110).aspx) – Reniuz 2015-01-21 08:38:38

+0

謝謝。讚賞。 – 2015-01-21 08:53:51

回答

0

我不知道這正是您的規格和你的描述有點混亂,但你可以那麼,爲什麼你使用dsDisplay.Tables.Add(DT)試試這個,

DataSet dsSaved = null; 
     DataSet ds = null; 
     DataTable dt = null; 
     DataSet dsDisplay = null; 
     for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 
     { 
      dsSaved = manageSavedjob.GetJobByID(Convert.ToInt32(ds.Tables[0].Rows[i]["SavedJobID"].ToString())); 

      dt = new DataTable(); 

      dt.Columns.Add("JobID"); 
      dt.Columns.Add("JobConID"); 
      dt.Columns.Add("jobTitle"); 
      dt.Columns.Add("jobInfo"); 
      dt.Columns.Add("priceFrom"); 
      dt.Columns.Add("priceTo"); 
      dt.Columns.Add("dateSent"); 
      dt.Columns.Add("lastUpdated"); 
      dt.Columns.Add("postUser"); 
      dt.Columns.Add("address"); 
      dt.Columns.Add("workers"); 


      DataRow workRow = dt.NewRow(); 

      workRow[0] = Convert.ToInt32(dsSaved.Tables[0].Rows[0]["JobID"].ToString()); 
      workRow[1] = Convert.ToInt32(dsSaved.Tables[0].Rows[0]["JobConID"].ToString()); 
      workRow[2] = dsSaved.Tables[0].Rows[0]["jobTitle"].ToString(); 
      workRow[3] = dsSaved.Tables[0].Rows[0]["jobInfo"].ToString(); 
      workRow[4] = Convert.ToInt32(dsSaved.Tables[0].Rows[0]["priceFrom"].ToString()); 
      workRow[5] = Convert.ToInt32(dsSaved.Tables[0].Rows[0]["priceTo"].ToString()); 
      workRow[6] = dsSaved.Tables[0].Rows[0]["dateSent"].ToString(); 
      workRow[7] = dsSaved.Tables[0].Rows[0]["lastUpdated"].ToString(); 
      workRow[8] = dsSaved.Tables[0].Rows[0]["postUser"].ToString(); 
      workRow[9] = dsSaved.Tables[0].Rows[0]["address"].ToString(); 
      workRow[10] = Convert.ToInt32(dsSaved.Tables[0].Rows[0]["workers"].ToString()); 



      dt.Rows.Add(workRow); 
      dsDisplay.Tables.Add(dt); 
     } 
相關問題