2013-01-03 120 views
0

我接收到的錯誤:無法轉換類型的對象的System.Data.DataRow'爲類型「System.Data.DataRowView

Unable to cast object of type 'System.Data.DataRow' to type 'System.Data.DataRowView'.

private void addToOrder(DataRowView drv) 
    { 
     DataRow dr = orderDataTable.NewRow(); 
     dr["ProductID"] = drv["ProductID"]; 
     dr["ProductBarcode"] = drv["ProductBarcode"]; 
     dr["ProductName"] = drv["ProductName"]; 
     dr["SalePrice"] = drv["SalePrice"]; 
     dr["SoldQuantity"] = 1; 
     dr["NotEditable"] = false; 
     try 
     { 
      orderDataTable.Rows.Add(dr); 
     } 
     catch (ConstraintException) 
     { 
      DataRow dr1 = orderDataTable.Rows.Find(drv["ProductID"]); 
      dr1["SoldQuantity"] = Convert.ToInt32(dr1["SoldQuantity"]) + 1; 
     } 
    } 
    private void btnAddToOrder_Click(object sender, RoutedEventArgs e) 
    { 
     // add to order 
     if(txtBarcodeAuto.Text.Length >0) 
     { 
      //get data from sql server database for product details(productID, ProductName,ProductPrice) 
      DataTable dscrntProd = prods.SelCrntProd4Sale(crntProdID); 
      foreach (DataRowView dr in dscrntProd.Rows) 
      { 
       addToOrder(dr); 
      } 
     } 
    } 

回答

2

錯誤是在下面的行來由於數據類型不匹配。

foreach (DataRowView dr in dscrntProd.Rows) // as dscrntProd is DataTable 

應該是這樣

foreach (DataRow dr in dscrntProd.Rows) 
{ 
    addToOrder(GetOrderDataRowViewFromDataFow(dr)); 
} 

你需要寫GetOrderDataRowViewFromDataRow

+0

不錯,趕上! +1 .. –

+0

除了你的結論之外,他不需要編寫'GetOrderDataRowViewFromDataRow',而是改變'addToOrder'的簽名來使用'DataRows'作爲@Reacher所提到的。 –

1

那麼,geez,那麼不要那樣做。試試這個:

private void addToOrder(DataRow drv) 
{ 
    .... 
} 

foreach (DataRow dr in dscrntProd.Rows) 
{ 
    addToOrder(dr); 
} 
+1

+1即使「不這樣做」,應該是「那麼做:」 –

+1

病人:醫生,當我這樣做的時候會很痛。醫生:那麼不要那樣做。 (編輯我的評論) –

0

DataRowis不是可轉換到DataRowView的

foreach(DataRow dr in dscrntProd.Rows) 
{ 
    addToOrder(dr); 
} 

private void addToOrder(DataRow dr) // change the function argument to DataRow. 
    {// Do something. 
} 

感謝。

+0

-1'DataTable.Rows'確實返回'DataRows'而不是'DataRowViews'的集合。 –

+0

對不起,我寫錯了。我正在編輯,請檢查。 –

+0

但是,這與@Reachers現在的答案是一樣的,所以我沒有看到附加值。然後你可能想刪除它。 –

相關問題