0

エラーが発生しました:

タイプ'System.Data.DataRow'のオブジェクトをタイプ'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);
            }
        }
    }
4

3 に答える 3

2

データ型の不一致が原因で、次の行にエラーが発生しています。

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

それは次のようになります

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

あなたは書く必要がありますGetOrderDataRowViewFromDataRow

于 2013-01-03T16:30:13.720 に答える
1

ええと、そうしないでください。代わりにこれを試してください:

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

foreach (DataRow dr in dscrntProd.Rows)
{
    addToOrder(dr);
}
于 2013-01-03T16:32:02.073 に答える
0

DataRowはDataRowViewに変換できません

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

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

ありがとう。

于 2013-01-03T16:40:06.043 に答える