私は 2 つの DataGridViews を持っています: 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より大きい場合はチェックされます。ここでやりたいことは、チェックボックス列 (プロモーション) に >0 の値があるproductsDataGridViewからプロモーションDataGridView への値をフィルター/移動することです(正確にはどちらでもかまいません)。
例: productsDataGridView に合計 25 個の製品があり、そのうちの 8 個がプロモーション製品 (チェックボックス列の値が 0 より大きい) である場合、promotionsDataGridView には、DataGridView からコピー/移動/フィルター処理された 8 つの値を入力する必要があります。
これまでのところ、次のコードを使用して、最初の DataGridView から 2 番目の 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に本当に慣れていないので、コンパイルさえするものを書くことができませんでした...
私を助けてください!