В моем приложении Windows Form * DataGridView
обновляется из TextChanged_Event
текстового поля (функция чтения штрих-кода).Каждая новая строка имеет значения, такие как Название продукта, Количество, Цена за единицу товара и Общая сумма .Значения Название продукта и Цена за единицу товара поступают из базы данных, в то время как я установил значение по умолчанию 1 для Количество .Значение Общая сумма является умножением Количество и Цена за единицу .
До сих пор все работает нормально, и я могу использоватьзначение по умолчанию 1 для продажи Количество каждого товара.Однако, если я хочу продать товар более одного раза, мне нужно заменить это значение количества по умолчанию на пользовательское значение.
Чтобы упростить этот процесс, я использовал Дочернюю форму с одним текстовым полем и кнопкой, которая позволит моему пользователю поставить пользовательское значение для столбца Количество, которое должно заменить значение по умолчанию 1 столбца Количество.
Я пробовал разные подходы, но безуспешно.Потому что я показываю дочернюю форму в той части процесса продажи, где приложение должно искать дублирующийся продукт в DataGridView .Если элемент уже присутствует в DataGridView, приложение запрашивает его добавление снова, и когда пользователь нажимает кнопку «Да», отображается дочерняя форма .
Так что это делает мою логикубессмысленно, потому что после отображения и обработки пользовательского текстового поля «Количество» в дочерней форме я не могу получить доступ к переменной в родительской форме для замены значения по умолчанию 1 на это пользовательское количество.
Мой код работает нормальноно мне просто нужно немного улучшить логику, чтобы я мог легко заменить значение количества по умолчанию на пользовательское значение из дочерней формы.
Вот мой код:
public void FillCurrentSoldItemGrid(string barCode)
{
string columnList = "ProductName, UnitPrice";
DataRow dr = NewSale.SelectByItemCode(columnList, barCode);
if (dr == null)
{
//show error message
return;
}
// check duplicate value in DataGridView
string productName = dr[0].ToString();
if (dgvSoldItems.RowCount > 0)
{
foreach (DataGridViewRow dgvRow in dgvSoldItems.Rows)
{
if (dgvRow.Cells[0].Value.ToString().CompareTo(productName) == 0)
{
if (DataAccess.AskUser("This item is already present in the grid?", "Confirm Item Quantity Update") == true)
{
//my child form code
using (var customSaleQuantity = new frmCustomSaleQuantity())
{
var result = customSaleQuantity.ShowDialog();
if (result == DialogResult.OK)
{
//need to assign this value of the customQuantity string to int quantity which is holding a default 1 value)
string customQuantity = customSaleQuantity.GetCustomQuantity;
}
}
}
}
}
}
//value of string customQuantity to be assigned to int quantity.
int quantity = 1;
int unitPrice = Convert.ToInt32(dr[1]);
DataGridViewRow row = new DataGridViewRow();
row.CreateCells(dgvAllSoldItems);
row.Cells[0].Value = productName;
row.Cells[1].Value = quantity;
row.Cells[2].Value = unitPrice;
row.Cells[3].Value = (quantity * unitPrice);
dgvAllSoldItems.Rows.Add(row);
}
А здеськод из моей дочерней формы:
public string GetCustomQuantity
{
get;
set;
}
private void btnProceedWithNewItemQuantity_Click(object sender, EventArgs e)
{
this.GetCustomQuantity = txtChooseSaleQuantity.Text.Trim();
this.Close();
}
Я новичок в c #, и у меня нет ни малейшего представления о том, как заменить значение по умолчанию 1 значением на пользовательское значение, если обнаружен дублирующий элемент,Это действительно важная задача, и мой срок почти закончен.
Любая помощь будет высоко оценена.