【发布时间】:2017-11-11 19:52:01
【问题描述】:
我有 DataGridView,其中包含大量数据和一个搜索文本框。 我的问题是,当我过滤 datagridview 行时,我希望根据搜索数据更改小计标签,但我无法做到这一点,因为我正在使用查询选择小计 SUM。
这是我的小计标签代码
SqlConnection con = new SqlConnection(str);
con.Open();
string query = "SELECT SUM(Sub_Total) from (SELECT distinct Sub_Total FROM Sales_Order) as Sales_Order";
using (SqlCommand command = new SqlCommand(query, con))
{
object result = command.ExecuteScalar();
Sub_Tot.Text = Convert.ToString(result); ;
}
con.Close();
文本框文本修改代码:
SqlConnection con = new SqlConnection(str);
con.Open();
SqlDataAdapter sda = new SqlDataAdapter("Select Invoice_no,Date_of_Sale,Customer_Name,Contact,Item_Code,Item_Name,Quantity,Selling_Price,Discount,Paid_Amount,Remaining,Sub_Total,Total From Sales_Order Order By Invoice_no", con);
DataTable dt = new DataTable();
sda.Fill(dt);
dgv.DataSource = dt;
DataView dv = new DataView(dt);
dv.RowFilter = string.Format("Item_Name LIKE '{0}%' ", Search_By_ItemName.Text);
dgv.DataSource = dv;
一切正常,但不会根据过滤器更改 SubTotal Text 我想根据搜索过滤器更改我的 SubTotal 标签文本怎么可能?
注意:使用计时器可以正常工作,但我不想使用计时器
int sum = 0;
for (int i = 0; i < Sale_Order_Grid.Rows.Count; i++)
{
sum += Convert.ToInt32(Sale_Order_Grid.Rows[i].Cells[8].Value);
}
this.lbl_SubTotal.Text = sum.ToString();
【问题讨论】:
-
改为搜索数据表。
-
@jdweng 任何代码示例?
-
类似这样的东西: List
searchRows = dt.AsEnumerable().Where(x => x.Field ("Customer_Name") == Search_By_ItemName.Text).ToList() ; int sum = searchRows.AsEnumerable().Sum(x => x.Field ("Paid_Amount")); -
有一些方法可以做到这一点,但最简单的方法是使用
RowsAdded事件。 -
或
DataBindingComplete
标签: c# winforms datagridview