Я работаю над пользовательским приложением POS в Asp.Net, используя C #, где у меня есть два DataGridViews в форме окна.DataGridView1 показывает все продажи.Когда пользователь щелкает любую запись в DataGridView1, определенные данные, такие как ProductName, Количество, Вариация, UnitPrice и TotalCost из выбранной записи в DataGridView, передаются в DataGridView2.Это делается с помощью события CurrentCellChanged в DataGridView2.
Моя проблема заключается в том, что у меня есть более одной детали, связанной с каждой продажей, которую я пытаюсь показать на DataGridView2, но я не могу установить каждую деталь выбранной продажив качестве источника данных для DataGridView2.Вот код, который я пробовал до сих пор:
private void DataGridView1_CurrentCellChanged(object sender, EventArgs e)
{
try
{
string saleId = DataGridView1.CurrentRow.Cells[0].Value.ToString();
DataGridView2.DataSource = SalesClass.SelectedSaleDetails(saleId);
}
catch (Exception)
{
}
}
Здесь событие CurrentCellChanged передает выбранный SaleId в мой SalesClass, где я запрашиваю детали продаж, связанные с этим конкретным SaleId, например:
public static DataTable SelectedSaleDetails(string saleId)
{
DataTable dt = new DataTable();
dt = DataAccess.Select(string.Format("select * from vSalesDetails where SaleID = {0}", saleId));
string[] values;
foreach (DataRow drItem in dt.Rows)
{
string variation = drItem["ProductVariation"].ToString();
string productName = drItem["ProductName"].ToString();
decimal quantity = Convert.ToDecimal(drItem["SaleQuantity"]);
decimal saleCostLevelC = Convert.ToDecimal(drItem["LevelCCost"]);
decimal purchaseCostLevelC = Convert.ToDecimal(drItem["LevelCPurchaseCost"]);
decimal levelBStandard = Convert.ToDecimal(drItem["LevelBStandard"]);
decimal levelCStandard = Convert.ToDecimal(drItem["LevelCStandard"]);
decimal parentTotalSalesCost = 0;
decimal levelATotalSalesCost = 0;
decimal levelBTotalSalesCost = 0;
decimal levelCTotalSalesCost = 0;
decimal salecost = 0;
decimal unitCost = 0;
switch (variation)
{
case "Parent Product":
decimal soleProductUnitPrice = Convert.ToDecimal(drItem["SoleProductUnitPrice"]);
salecost = quantity * soleProductUnitPrice;
unitCost = soleProductUnitPrice;
break;
case "Level A":
decimal levelBSaleCost = levelCStandard * saleCostLevelC;
decimal levelASaleCost = levelBStandard * levelBSaleCost;
salecost = quantity * levelASaleCost;
unitCost = levelASaleCost;
break;
case "Level B":
decimal saleCostLevelB = levelCStandard * saleCostLevelC;
salecost = quantity * saleCostLevelB;
unitCost = saleCostLevelB;
break;
case "Level C":
salecost = quantity * saleCostLevelC;
unitCost = saleCostLevelC;
break;
default:
break;
}
values = new string[] {productName, variation, unitCost.ToString(), quantity.ToString(), salecost.ToString()};
}
// return each of the productName, variation, unitCost and quantity of a selected Sale here. This is going to be assigned as the DataGridView2 DataSource.
}
Мой код работает нормально, и я могу получить все необходимые значения в массиве values
внутри цикла foreach.Однако я почему-то не могу передать детали продажи (productName, изменение, unitCost и количество) конкретной продажи обратно в источник данных DataGridView2 здесь:
DataGridView2.DataSource = //values returned from SalesClass;
Есть ли кто-нибудь, кто может предложить мне еще лучшеэффективный подход к этому, поскольку я новичок здесь.