0
我有這個訂單表及其產品。它看起來像這樣:根據產品狀態更改狀態datagridview
OrderID : 001 Order Status : ---------
Products Ordered Qty : 3
Products Ordered: (in datagridview)
Status ProductName QtyOrdered QtyReceived
============================================================
Unreceived p1 2 0
Complete p2 3 3
Incomplete p3 4 4
現在它的訂單狀態應該根據datagridview中產品的狀態而改變。
如果所有產品狀態均爲「完成」,則訂單狀態=完成訂單。 即使只有1個產品有「不完整」,訂單狀態=後退訂單。 默認情況下,所有產品均未收到,訂單狀態未收到。
這是我的代碼。但它始終使訂單狀態=「完成訂單」。 順便說一句,我把這個代碼點擊DataGridView事件,如果有幫助。
private void checkorderstatus()
{
bool incomplete = true;
bool complete = true;
if(dgvReceivedproducts.Rows.Count == Convert.ToInt32(rrQty.Text))
{
foreach (DataGridViewRow rw in dgvReceivedproducts.Rows)
{
string state =
rw.Cells[dgvReceivedproducts.Columns["Status"].Index].Value.ToString();
if (state.Equals("Unreceived"))
{
incomplete = false;
break;
}
else if (state.Equals("Incomplete"))
{
incomplete = true;
}
if (!state.Equals("Complete"))
{
complete = false;
break;
}
}
if (incomplete)
{
crud.AddRecord("Update Orders Set Status = 'Back Order'
where OrderID = '" + rrorderid.Text + "' ");
}
if (complete)
{
crud.AddRecord("Update Orders Set Status = 'Complete Order'
where OrderID = '" + rrorderid.Text + "' ");
}
}
}
按照您的邏輯循環將在第一個實例突破時產品狀態'unrecieived'。因此,如果您的訂單具有所有具有該狀態的產品,則循環將與第一個產品斷開,並且'complete'變量將爲true,這就是爲什麼'complete'的if塊將執行並且您的訂單將顯示爲完整。你需要把'if(!state.Equals(「Complete」))'先阻塞並打破循環。 –
感謝您的輸入先生,我似乎無法使其工作。我只是決定將方法分爲兩部分。我認爲這會更容易。 – FutureDev