リストのアイテムでコンボボックスを埋めたいという問題がありました。リストはデータベースからアイテムを取得します。
問題は、コンボボックスがデータベースの最後のレコードだけでいっぱいになることです。
例: 1、2、3、4、5 のような 5 つの異なる ID を持つデータベースに 5 つのレコードを取得した場合、コンボボックスには ID 5 が 5 回だけ表示されます。このように:5-5-5-5-5。私が欲しいのは、1-2-3-4-5 です。
小さなエラーである可能性があり、さまざまなことを調査およびテストしようとしましたが、何も機能しませんでした. 助けていただければ幸いです。前もって感謝します。
以下のコードは、データベースからのアイテムでリストを埋める問題があると思われるデータベース クラスからのものです。
public static List<Product> getProducts()
{
List<Product> listProducts= new List<Product>();
try
{
connection = new SqlConnection("Data Source=localhost\\SQLEXPRESS;Initial Catalog=DB_Products;Integrated Security=SSPI;");
connection.Open();
SqlCommand selectProductNumber = new SqlCommand(@"Select ProductNumber FROM Product", connection);
SqlDataReader dr = selectProductNumber.ExecuteReader();
while (dr.Read())
{
Product product = new Product();
product.ProductNumber = dr["ProductNumber"].ToString();
listProducts.Add(product);
}
dr.Close();
dr.Dispose();
return listProducts;
}
finally
{
if (connection != null)
{
connection.Close();
}
}
}
コンボボックスを埋めるメソッドと、メソッドを使用する場所は次のとおりです。
private ProductList productList = new ProductList();
private void FillComboBox()
{
comboBox.Items.Clear();
for (int i = 0; i < productList.Count; i++)
{
comboBox.Items.Add(productList[i].GetProductNumber(" \t "));
}
}
private void Form1_Load(object sender, EventArgs e)
{
productList.Fill();
FillComboBox();
}
私の ProductList クラスから:
public void Fill()
{
productList = DB_class.getProducts();
}
public Product this[int index]
{
get
{
return productList[index];
}
}
public void Add(Product product)
{
productList.Add(product);
}
public int Count
{
get { return productList.Count; }
}
私の製品クラスから:
public string GetProductNumber(string showProductNumber)
{
return ProductNumber;
}