Reputation: 189
I received the error:
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);
}
}
}
Upvotes: 0
Views: 13815
Reputation: 1813
Well, geez, don't do that, then. Try this instead:
private void addToOrder(DataRow drv)
{
....
}
foreach (DataRow dr in dscrntProd.Rows)
{
addToOrder(dr);
}
Upvotes: 1
Reputation: 3584
DataRowis not convertable to DataRowView
foreach(DataRow dr in dscrntProd.Rows)
{
addToOrder(dr);
}
private void addToOrder(DataRow dr) // change the function argument to DataRow.
{// Do something.
}
Thanks.
Upvotes: 0
Reputation: 30728
Error is coming in following line due to data type mismatch.
foreach (DataRowView dr in dscrntProd.Rows) // as dscrntProd is DataTable
It should be like
foreach (DataRow dr in dscrntProd.Rows)
{
addToOrder(GetOrderDataRowViewFromDataFow(dr));
}
You need to write GetOrderDataRowViewFromDataRow
.
Upvotes: 2