如何遍历数据表并过滤C#中的项目 [英] How to loop through a datatable and filter items in C#
问题描述
我在Windows窗体中有一个tabcontrol,下面有一个SQL数据库。
数据库 [ ^ ]
表格 [ ^ ]
< pre lang =c#>
private void CreateTabPages()//为每个ProductType创建标签页
{
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(SELECT DISTINCT ProductType,Description FROM TblProductType,con);
DataTable dt = new DataTable( );
sda.Fill(dt);
foreach(dt.Rows中的DataRow博士)
{
tabControl1.TabPages.Add(dr [ProductType]。ToString(),dr [Descriptio n]。ToString());
}
con.Close();
}
private void AddProductsToTabbedPanel()//将产品添加到标签页
{
foreach(TabCon tp in tabControl1.TabPages)
{
con.Open( );
SqlDataAdapter sda = new SqlDataAdapter(SELECT DISTINCT Description FROM TblProduct,con);
DataTable dt = new DataTable();
sda.Fill(dt);
FlowLayoutPanel flp = new FlowLayoutPanel();
flp.Dock = DockStyle.Fill;
foreach(dt.Rows中的DataRow博士)
{
按钮b =新按钮();
b.Size = new Size(100,100);
b.Text = dr [Description]。ToString();
flp.Controls.Add(b);
}
tp.Controls.Add(flp) ;
con.Close();
}
}
现在我想根据产品类型过滤每个标签页中的产品,而不是在所有标签页中显示我的数据表中的每个产品。我该怎么做?
您可以使用DataView类的RowFilter属性。像这样: -
DataTable tbl = GetAllProducts();
DataView dv = tbl.DefaultView;
// 对于标签1 [Product ='Cycle']
dv.RowFilter = Product ='Cycle';
DataTable tblCycle = dv.ToTable();
// ---------------- -----------------
// 对于标签2 [Product ='MotorCycle']
dv.RowFilter = 产品=电单车跨度>;
DataTable tblMotorCycle = dv.ToTable();
// ---------------- -----------------
/ * 对所有产品执行相同操作* /
您可以使用DataTable类的选择方法。像这样: -
DataTable tbl = GetAllProducts();
// 对于标签1 [Product ='Cycle']
DataRow [] drCycle = tbl.Select( Product ='Cycle' )
// --------------- ------------------
// For Tab 2 [Product ='MotorCycle']
DataRow [] drMotorCycle = tbl.Select( Product ='MotorCycle')
// ---------------------------------
/ * 对所有产品执行相同操作* /
I have a tabcontrol in a windows form and a SQL database like below.
Database[^]
Form[^]
<pre lang="c#">
private void CreateTabPages() // Create Tab Pages for each ProductType
{
con.Open();
SqlDataAdapter sda = new SqlDataAdapter("SELECT DISTINCT ProductType, Description FROM TblProductType", con);
DataTable dt = new DataTable();
sda.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
tabControl1.TabPages.Add(dr["ProductType"].ToString(),dr["Description"].ToString());
}
con.Close();
}
private void AddProductsToTabbedPanel() // Add Products to Tab Pages
{
foreach (TabPage tp in tabControl1.TabPages)
{
con.Open();
SqlDataAdapter sda = new SqlDataAdapter("SELECT DISTINCT Description FROM TblProduct", con);
DataTable dt = new DataTable();
sda.Fill(dt);
FlowLayoutPanel flp = new FlowLayoutPanel();
flp.Dock = DockStyle.Fill;
foreach (DataRow dr in dt.Rows)
{
Button b = new Button();
b.Size = new Size(100, 100);
b.Text = dr["Description"].ToString();
flp.Controls.Add(b);
}
tp.Controls.Add(flp);
con.Close();
}
}
Now I want to filter products in each tabpage according to their product type, without displaying every product in my datatable in all tab pages. How do I do this?
You can use "RowFilter" property of "DataView" Class. Like this :-
DataTable tbl = GetAllProducts(); DataView dv = tbl.DefaultView; // For Tab 1 [Product='Cycle'] dv.RowFilter = "Product='Cycle'"; DataTable tblCycle = dv.ToTable(); //--------------------------------- // For Tab 2 [Product='MotorCycle'] dv.RowFilter = "Product='MotorCycle'"; DataTable tblMotorCycle = dv.ToTable(); //--------------------------------- /*Do same for all products you have*/
You can use "Select" method of "DataTable" Class. Like this :-
DataTable tbl = GetAllProducts(); // For Tab 1 [Product='Cycle'] DataRow[] drCycle = tbl.Select("Product='Cycle'") //--------------------------------- // For Tab 2 [Product='MotorCycle'] DataRow[] drMotorCycle = tbl.Select("Product='MotorCycle'") //--------------------------------- /*Do same for all products you have*/
这篇关于如何遍历数据表并过滤C#中的项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!