私はYouTubeでこのチュートリアルに従っていましたが、この部分で行き詰まりました。
ここでは、製品のタイプに応じて、TabControl タブ ページにデータベース内の製品を動的に表示する必要がありますが、タブ ページの製品タイプに従って製品をフィルタリングできないようで、すべての製品が以下のようにすべての製品タイプに表示されます。
データベースとアプリケーションについては、以下のスクリーン ショットを参照してください。この問題に関するヘルプをいただければ幸いです。
商品タイプをタブページとして表示するコード
private void CreateTabPages()
{
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());
}
//var tabID = (from DataRow dr in dt.Rows
// select (Int32)dr["TabID"]).Distinct();
con.Close();
製品を表示するようにコードを更新しました
private void AddProductsToTabbedPanel()
{
foreach (TabPage tp in tabControl1.TabPages)
{
con.Open();
SqlDataAdapter sdaProductType = new SqlDataAdapter("SELECT ProductType FROM TblProductType WHERE Description =" + tp.Text, con);
DataTable dtForProductType = new DataTable();
sdaProductType.Fill(dtForProductType);
string currentProductType = (string)dtForProductType.Rows[0]["ProductType"];
SqlDataAdapter sda = new SqlDataAdapter("SELECT DISTINCT Description FROM TblProduct WHERE ProductType =" + currentProductType, 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();
}
}