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的所有数量?或者