我有 2 个 DataGridView:productsDataGridView和PromotionsDataGridView。
第一个是productsDataGridView ,它使用此方法从文件中读取所有值:
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”的复选框列(Promotion 列从文件中读取整数值):如果它的值为 0 - 不选中该框,如果大于 1:选中。现在我想做的是过滤/移动(我不关心两者中的哪一个)从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 真的很陌生,所以我无法编写任何甚至可以编译的东西...
请帮我!