【发布时间】:2013-05-20 06:38:27
【问题描述】:
我有 2 个 DataGridView:productsDataGridView 和 promotionsDataGridView。
第一个,productsDataGridView,它使用这种方法从文件中读取ALL值:
public static List<Products> LoadUserListFromFile(string filePath)
{
var loadProductsData = new List<Products>();
foreach (var line in File.ReadAllLines(filePath))
{
var columns = line.Split('\t');
loadProductsData.Add(new Products
{
InventoryID = "BG" + columns[0],
Brand = columns[1],
Category = columns[2],
Description = columns[3],
Promotions = Convert.ToInt32(columns[4]),
Quantity = Convert.ToInt32(columns[5]),
Price = Convert.ToDouble(columns[6])
});
}
return loadProductsData;
}
第一个 DataGridView (productsDataGridView) 已正确填充所有值。现在在我的 productsDataGridView 中,我设置了一个名为“Promotion”的 check-box 列(Promotion 列从文件中读取整数值):如果它的值为 0 -该框不被选中,如果大于 1:被选中。 现在我想做的是 FILTER/MOVE (我不关心两者中的哪一个)从 productsDataGridView 到 promotionsDataGridView 的值在哪里我们在复选框列(促销)中有一个 >0 值。
示例: 如果 productsDataGridView 共有 25 个产品,其中 8 个是促销产品(复选框列中的值 >0),promotionsDataGridView 应填充 8 个值,这些值是从 DataGridView 复制/移动/过滤/任何内容。
到目前为止,我只能使用以下代码将数据从第一个 DataGridView 复制到第二个:
public void Experimental2()
{
dataGridView1.DataSource = Products.LoadUserListFromFile(filePath);
//Bind datagridview to linq
var dg1 =
(from a in productsDataGridView.Rows.Cast<DataGridViewRow>()
select new { Column1 = a.Cells["Column1"].Value.ToString() }).ToList();
//loop dg1 and save it to datagridview2
foreach (var b in dg1)
{
dataGridView1.Rows.Add(b.Column1);
}
}
我做了一些可怜的尝试来插入一个 IF 检查,这将为我完成这项工作(仅复制 IF columnt[4] > 0)但我对 DataGridView 真的很陌生,所以我什至无法写任何东西完全编译...
请帮帮我!
【问题讨论】:
-
您是否尝试过探索事件? msdn.microsoft.com/en-us/library/…有很多事件可以被利用和使用
标签: c# datagridview filter