将 SQL Table 中的数据绑定到使用 C# 中的用户控件创建的自定义列表

Binding data from SQL Table to custom list created using user control in C#

我正在处理一个项目,我需要在表单 (frmCaterlogs) 上显示项目列表。我已经使用用户控件和 FlowLayOutPanel 成功实现了自定义列表。但是,现在我陷入了如何将 sql 数据库中的 caterlogs 绑定到我的自定义列表的问题:这是我的代码。在 custome_list(CatList) 上,我有 4 个控件,Id、Titile、Description、Icon 作为二进制数据存储在数据库中 sqldb 中。我迷失了如何将数据绑定到自定义列表控件,该控件看起来像是我数据库中的所有记录。提前感谢大家的宝贵建议。

    private void PopulateCatelog()// This code is triggered when frmcaterlogs loads.
    {
        int l;
        string query = "SELECT * from ServicesCaterlogs";
        SqlConnection con = new SqlConnection(cn);
        SqlCommand cmd = new SqlCommand(query, con);
        SqlDataAdapter sda = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        ListView Items = new ListView()
        sda.Fill(dt);
        l = dt.Rows.Count;
        foreach(DataRow dr in dt.Rows) // This is where i am stuck
        {
            CatList iList = new CatList(dr["Item"].ToString());
            iList.Title = dr;
            
        }
        CatList[] ListItem = new CatList[l];
        //Loop though to check each item 
        for (int i = 0; i < ListItem.Length; i++)
        {
            ListItem[i] = new CatList();
            ListItem[i].Title = fetch data for a list;
            ListItem[i].Message = "fetch data for a lis";
            ListItem[i].icon = Resources.Warning;
            ListItem[i].IconBackground1 = Color.DarkGoldenrod;

            if (FlowLayoutPanel.Controls.Count < 0)
            {
                FlowLayoutPanel.Controls.Clear();
            }
            else
            {
                FlowLayoutPanel.Controls.Add(ListItem[i]);
            }
          
        } 

更改代码后我得到了想要的结果,如下所示

private void FrmCatalogs_Load(object sender, EventArgs e)
        {
            PopulateCatelog();
        }
        private void PopulateCatelog()
        {
            //Populate your listitem here 
            int l;
            string query = "SELECT * from ServicesCaterlogs";
            SqlConnection con = new SqlConnection(cn);
            SqlCommand cmd = new SqlCommand(query, con);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            
            sda.Fill(dt);
            l = dt.Rows.Count;
            foreach(DataRow dr in dt.Rows)
            {
                ListViewItem item = new ListViewItem(dr["Item"].ToString());
                ListViewItem des = new ListViewItem(dr["Item_Description"].ToString());


                CatList[] ListItem = new CatList[l];


                for (int i = 0; i < ListItem.Length - l +1 ; i++)
                {
                    ListItem[i] = new CatList();
                    ListItem[i].Title = item.Text;
                    ListItem[i].Message = des.Text;
                    ListItem[i].icon = Resources.Warning;
                    ListItem[i].IconBackground1 = Color.DarkGoldenrod;

                    if (FlowLayoutPanel.Controls.Count < 0)
                    {
                        FlowLayoutPanel.Controls.Clear();
                    }
                    else
                    {
                        FlowLayoutPanel.Controls.Add(ListItem[i]);
                    }

                }

            }
            
        }