无法强制转换类型为'System.Data.DataRow'键入'System.Data.Dat

本文关键字:Data System DataRow 键入 Dat 转换 类型 | 更新日期: 2023-09-27 17:50:38

我收到了错误:

无法强制转换"System.Data"类型的对象。"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);
            }
        }
    }

无法强制转换类型为'System.Data.DataRow'键入'System.Data.Dat

由于数据类型不匹配,下面一行出现错误。

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

应该是

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

你需要写GetOrderDataRowViewFromDataRow

天哪,那就别那么做了。试试这个:

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

数据owis不能转换为数据owview

foreach(DataRow dr in dscrntProd.Rows)
{
    addToOrder(dr);
}
private void addToOrder(DataRow dr) // change the function argument to DataRow.
    {// Do something.
}

谢谢。