C# 如何检查datagridview1中的值是否等于或小于listview1中的值
我有一个C# 如何检查datagridview1中的值是否等于或小于listview1中的值,c#,asp.net,listview,datagridview,ms-access-2010,C#,Asp.net,Listview,Datagridview,Ms Access 2010,我有一个Datagridview1和一个Listview1当单击datagridview时,它会将数据传输到文本框,然后输入项目的数量。 按下“保存”按钮后,它将保存在数据库(ms Access)中 如果datagridview中的项小于或等于,则不会出错。但是,如果我再次单击该项目,它将要求相同的数量 我要做的是检查listview1和textbox(数量)中的项目是否显示一个消息框,如果listview1.subitem+textbox(数量)小于datagridview1上的项目 这是我的
Datagridview1
和一个Listview1
当单击datagridview时,它会将数据传输到文本框,然后输入项目的数量。
按下“保存”按钮后,它将保存在数据库(ms Access)中
如果datagridview中的项小于或等于,则不会出错。但是,如果我再次单击该项目,它将要求相同的数量
我要做的是检查listview1
和textbox(数量)
中的项目是否显示一个消息框,如果listview1.subitem
+textbox(数量)
小于datagridview1
上的项目
这是我的dataGridView3加载事件
public void dgvData()
{
try
{
con = new OleDbConnection(cs);
con.Open();
String sql = "SELECT StockID,Menu.MenuID,MenuName,Price,sum(Quantity) from Stocks,Menu where Stocks.MenuID=Menu.MenuId group by StockID,MenuName,Price,Menu.MenuID having sum(quantity > 0) order by MenuName";
cmd = new OleDbCommand(sql, con);
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
dataGridView3.Rows.Clear();
while (dr.Read() == true)
{
dataGridView3.Rows.Add(dr[0], dr[1], dr[2], dr[3], dr[4]);
}
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
这是dataGridView3单击事件
private void dataGridView3_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
try
{
btnAddCart.Enabled = true;
txtQtyKilo.Enabled = true;
txtTotalPayment.Enabled = true;
AcceptButton = btnAddCart;
ErrorMenuName.Clear();
DataGridViewRow dr = dataGridView3.SelectedRows[0];
txtMenuID.Text = dr.Cells[1].Value.ToString();
txtMenuName.Text = dr.Cells[2].Value.ToString();
txtUnitPrice.Text = dr.Cells[3].Value.ToString();
txtOnHand.Text = dr.Cells[4].Value.ToString();
txtQtyKilo.Focus();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
最后是我在ListView1上插入数据的按钮
private void AddToCart_Click(object sender, EventArgs e)
{
dataGridView3.ClearSelection();
try
{
if (txtClientID.Text == "")
{
ErrorClientID.SetError(txtClientID, "Select A Client!");
return;
}
if (txtMenuName.Text == "")
{
ErrorMenuName.SetError(txtMenuName, "Select Menu!");
return;
}
if (txtQtyKilo.Text == "")
{
ErrorQtyPerKilo.SetError(txtQtyKilo, "Enter No. of Quantity Per Kilo!");
txtQtyKilo.Focus();
return;
}
int SaleQty = Convert.ToInt32(txtQtyKilo.Text);
if (SaleQty == 0)
{
ErrorQtyPerKilo.SetError(txtQtyKilo, "Input Must Be Greater Than 0");
txtQtyKilo.Focus();
return;
}
txtQtyKilo.Enabled = false;
btnSave.Enabled = true;
if (ListView1.Items.Count == 0)
{
ListViewItem lst = new ListViewItem();
lst.SubItems.Add(txtMenuID.Text);
lst.SubItems.Add(txtMenuName.Text);
lst.SubItems.Add(txtUnitPrice.Text);
lst.SubItems.Add(txtQtyKilo.Text);
lst.SubItems.Add(txtTotalAmount.Text);
ListView1.Items.Add(lst);
txtSubTotal.Text = subtot().ToString();
txtST.Text = Convert.ToInt32((Convert.ToInt32(txtSubTotal.Text) * Convert.ToDouble(txtTaxPer.Text) / 100)).ToString();
txtGrandTotal.Text = (Convert.ToInt32(txtSubTotal.Text) + Convert.ToInt32(txtST.Text)).ToString();
int val1 = 0;
int val2 = 0;
int.TryParse(txtGrandTotal.Text, out val1);
int.TryParse(txtTotalPayment.Text, out val2);
int I = (val1 - val2);
txtPaymentDue.Text = I.ToString();
texboxClear();
return;
}
for (int j = 0; j <= ListView1.Items.Count - 1; j++)
{
if (ListView1.Items[j].SubItems[1].Text == txtMenuID.Text)
{
ListView1.Items[j].SubItems[1].Text = txtMenuID.Text;
ListView1.Items[j].SubItems[2].Text = txtMenuName.Text;
ListView1.Items[j].SubItems[3].Text = txtUnitPrice.Text;
ListView1.Items[j].SubItems[4].Text = (Convert.ToInt32(ListView1.Items[j].SubItems[4].Text) + Convert.ToInt32(txtQtyKilo.Text)).ToString();
ListView1.Items[j].SubItems[5].Text = (Convert.ToInt32(ListView1.Items[j].SubItems[5].Text) + Convert.ToInt32(txtTotalAmount.Text)).ToString();
txtSubTotal.Text = subtot().ToString();
txtST.Text = Convert.ToInt32((Convert.ToInt32(txtSubTotal.Text) * Convert.ToDouble(txtTaxPer.Text) / 100)).ToString();
txtGrandTotal.Text = (Convert.ToInt32(txtSubTotal.Text) + Convert.ToInt32(txtST.Text)).ToString();
int val1 = 0;
int val2 = 0;
int.TryParse(txtGrandTotal.Text, out val1);
int.TryParse(txtTotalPayment.Text, out val2);
int I = (val1 - val2);
txtPaymentDue.Text = I.ToString();
texboxClear();
return;
}
}
ListViewItem lst1 = new ListViewItem();
lst1.SubItems.Add(txtMenuID.Text);
lst1.SubItems.Add(txtMenuName.Text);
lst1.SubItems.Add(txtUnitPrice.Text);
lst1.SubItems.Add(txtQtyKilo.Text);
lst1.SubItems.Add(txtTotalAmount.Text);
ListView1.Items.Add(lst1);
txtSubTotal.Text = subtot().ToString();
txtST.Text = Convert.ToInt32((Convert.ToInt32(txtSubTotal.Text) * Convert.ToDouble(txtTaxPer.Text) / 100)).ToString();
txtGrandTotal.Text = (Convert.ToInt32(txtSubTotal.Text) + Convert.ToInt32(txtST.Text)).ToString();
int val3 = 0;
int val4 = 0;
int.TryParse(txtGrandTotal.Text, out val3);
int.TryParse(txtTotalPayment.Text, out val4);
int I1 = (val3 - val4);
txtPaymentDue.Text = I1.ToString();
texboxClear();
return;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void AddToCart\u单击(对象发送方,事件参数e)
{
dataGridView3.ClearSelection();
尝试
{
如果(txtClientID.Text==“”)
{
SetError(txtClientID,“选择一个客户端!”);
返回;
}
如果(txtMenuName.Text==“”)
{
SetError(txtMenuName,“选择菜单!”);
返回;
}
如果(txtQtyKilo.Text==“”)
{
ErrorQtyPerKilo.SetError(txtQtyKilo,“输入每公斤的数量!”);
txtQtyKilo.Focus();
返回;
}
int SaleQty=Convert.ToInt32(txtQtyKilo.Text);
如果(销售数量==0)
{
ErrorQtyPerKilo.SetError(txtQtyKilo,“输入必须大于0”);
txtQtyKilo.Focus();
返回;
}
txtQtyKilo.Enabled=false;
btnSave.Enabled=true;
如果(ListView1.Items.Count==0)
{
ListViewItem lst=新ListViewItem();
lst.SubItems.Add(txtMenuID.Text);
lst.SubItems.Add(txtMenuName.Text);
lst.SubItems.Add(txUnitPrice.Text);
添加(txtQtyKilo.Text);
lst.SubItems.Add(txtotalamount.Text);
ListView1.Items.Add(lst);
txtSubTotal.Text=subtot().ToString();
txtST.Text=Convert.ToInt32((Convert.ToInt32(txtssubtotal.Text)*Convert.ToDouble(txttasper.Text)/100)).ToString();
Text=(Convert.ToInt32(txtssubtotal.Text)+Convert.ToInt32(txtST.Text)).ToString();
int val1=0;
int val2=0;
int.TryParse(txtgrandtottal.Text,out val1);
int.TryParse(txtotalpayment.Text,out val2);
int I=(val1-val2);
txtPaymentDue.Text=I.ToString();
texboxClear();
返回;
}
对于(int j=0;j val1)
{
ErrorQtyPerKilo.SetError(txtQtyKilo,“选择可用数量或<数量”);
txtQtyKilo.Text=“”;
txtTotalAmount.Text=“”;
txtQtyKilo.Focus();
返回;
}
其他的
{
ErrorQtyPerKilo.Clear();
}
}
它只是检查手头上的数量。text是否小于输入的数量。正如我们在这里讨论的,是获取列的listview值的总和的代码,即
数量
将这些值添加到文本框
值中,并与datagridview
值进行比较
double totl = 0;
protected void lvtest_DataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
Label lbltotalquantity= e.Item.FindControl("lblquantity") as Label;
totl += Convert.ToDouble(lbltotalquantity.Text);
}
}
protected void lvtest_PreRender(object sender, EventArgs e)
{
Label lblTot = this.lvProducts.FindControl("lblTotal") as Label;
lblTot.Text = totl.ToString(); ;
}
编辑:
// Optional ToDo: pass a int value indicating which "column" to add up
public decimal GetSubTotal()
{
decimal TotalValue = default(decimal);
decimal tmp = default(decimal);
// arrays and collections start at index(0) not (1)
for (int n = 0; n <= ListView1.Items.Count - 1; n++)
{
// ToDo: Not all items must have the same number of SubItems
// should also check SubItems Count >= 1 for each item
// try to get the value:
if (decimal.TryParse(ListView1.Items(n).SubItems(1).Text, tmp))
{
TotalValue += tmp;
}
}
return TotalValue;
}
//可选ToDo:传递一个int值,指示要添加的“列”
公共小计()
{
decimal TotalValue=默认值(十进制);
十进制tmp=默认值(十进制);
//数组和集合从索引(0)开始,而不是从索引(1)开始
对于(int n=0;每个项目n=1
//尝试获取值:
if(decimal.TryParse(ListView1.Items(n).子项(1).文本,tmp))
{
总价值+=tmp;
}
}
返回总值;
}
更新的答案
int num1 = 0; int i = 0; int j = 0; int h = 0;
for (int k = 0; k <= ListView1.Items.Count - 1; k++)
{
i = Convert.ToInt32(ListView1.Items[k].SubItems[4].Text);
}
int.TryParse(txtQtyKilo.Text, out j);
num1 = i + j;
textBox11.Text = Convert.ToString(num1);
int.TryParse(textBox11.Text, out h);
if (num1 <= Convert.ToInt32(txtOnHand.Text))
{
textBox11.Text = "";
}
else
{
txtQtyKilo.Text = "";
textBox11.Text = "";
MessageBox.Show("Must not be greater than the available menu!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
intnum1=0;inti=0;intj=0;inth=0;
对于(int k=0;k,我们在这里讨论的是获取列的listview值总和的代码,即Quantity
将这些值添加到Textbox
值中,并与来自datagridview
值的值进行比较
double totl = 0;
protected void lvtest_DataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
Label lbltotalquantity= e.Item.FindControl("lblquantity") as Label;
totl += Convert.ToDouble(lbltotalquantity.Text);
}
}
protected void lvtest_PreRender(object sender, EventArgs e)
{
Label lblTot = this.lvProducts.FindControl("lblTotal") as Label;
lblTot.Text = totl.ToString(); ;
}
编辑:
// Optional ToDo: pass a int value indicating which "column" to add up
public decimal GetSubTotal()
{
decimal TotalValue = default(decimal);
decimal tmp = default(decimal);
// arrays and collections start at index(0) not (1)
for (int n = 0; n <= ListView1.Items.Count - 1; n++)
{
// ToDo: Not all items must have the same number of SubItems
// should also check SubItems Count >= 1 for each item
// try to get the value:
if (decimal.TryParse(ListView1.Items(n).SubItems(1).Text, tmp))
{
TotalValue += tmp;
}
}
return TotalValue;
}
//可选ToDo:传递一个int值,指示要添加的“列”
公共小计()
{
decimal TotalValue=默认值(十进制);
十进制tmp=默认值(十进制);
//数组和集合从索引(0)开始,而不是从索引(1)开始
对于(int n=0;每个项目n=1
//尝试获取值:
if(decimal.TryParse(ListView1.Items(n).子项(1).文本,tmp))
{
总价值+=tmp;
}
}
返回总值;
}
更新的答案
int num1 = 0; int i = 0; int j = 0; int h = 0;
for (int k = 0; k <= ListView1.Items.Count - 1; k++)
{
i = Convert.ToInt32(ListView1.Items[k].SubItems[4].Text);
}
int.TryParse(txtQtyKilo.Text, out j);
num1 = i + j;
textBox11.Text = Convert.ToString(num1);
int.TryParse(textBox11.Text, out h);
if (num1 <= Convert.ToInt32(txtOnHand.Text))
{
textBox11.Text = "";
}
else
{
txtQtyKilo.Text = "";
textBox11.Text = "";
MessageBox.Show("Must not be greater than the available menu!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
intnum1=0;inti=0;intj=0;inth=0;
对于(int k=0;k这是代码:
int num1 = 0; int i = 0; int j = 0; int h = 0;
for (int k = 0; k <= ListView1.Items.Count - 1; k++)
{
i = Convert.ToInt32(ListView1.Items[k].SubItems[4].Text);
}
int.TryParse(txtQtyKilo.Text, out j);
num1 = i + j;
textBox11.Text = Convert.ToString(num1);
int.TryParse(textBox11.Text, out h);
if (num1 <= Convert.ToInt32(txtOnHand.Text))
{
textBox11.Text = "";
}
else
{
txtQtyKilo.Text = "";
textBox11.Text = "";
MessageBox.Show("Must not be greater than the available menu!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
intnum1=0;inti=0;intj=0;inth=0;
对于(int k=0;k这是代码:
int num1 = 0; int i = 0; int j = 0; int h = 0;
for (int k = 0; k <= ListView1.Items.Count - 1; k++)
{
i = Convert.ToInt32(ListView1.Items[k].SubItems[4].Text);
}
int.TryParse(txtQtyKilo.Text, out j);
num1 = i + j;
textBox11.Text = Convert.ToString(num1);
int.TryParse(textBox11.Text, out h);
if (num1 <= Convert.ToInt32(txtOnHand.Text))
{
textBox11.Text = "";
}
else
{
txtQtyKilo.Text = "";
textBox11.Text = "";
MessageBox.Show("Must not be greater than the available menu!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
intnum1=0;inti=0;intj=0;inth=0;
对于(int k=0;k),它大于手头的数量。那么,您需要sql查询或验证吗?那么我们需要asp.net标记,以及您希望在什么时候触发此验证?如果listbox和textbox上的数量大于datagridview上的数量,则说明datagridview的所有数量?或者