1. 程式人生 > >C# Winform 關於ListView控制元件繫結DataTable

C# Winform 關於ListView控制元件繫結DataTable

今天用到ListView控制元件,這裡總結一下ListView控制元件繫結DataTable的方法

下面需要特別注意的是,繫結的過程中實現繫結控制元件的column的屬性,再進行item的繫結。

與DataGridView不同的是,不能直接使用DataSourse繫結,

再者,繫結第一個Items的時候一定要例項化一個Item進行單獨繫結,因為第一個Item與後面的不用即Item與SubItem的區別,下面的程式碼中也給出了相應的註釋

 private void LoadData()
        {
            string sql = @"select * from room";
            DataTable dt = DBUtil.getDataTable(sql);

            this.listView1.Columns.Clear();  //好習慣,先清除再新增保證資料的一致性
            this.listView1.Columns.Add("roomid"); 
            this.listView1.Columns.Add("typeids");
            this.listView1.Columns.Add("price");

            this.listView1.Items.Clear();

            int length = dt.Rows.Count;

            for (int i = 0; i < length; i++)
            {
                ListViewItem lvi = new ListViewItem(dt.Rows[i]["roomid"].ToString());  //ListView的第一個Item作為主項需要單獨新增

                string typeid = dt.Rows[i]["typeids"].ToString();

                switch (typeid)
                {
                    case "1":
                        lvi.ImageIndex = 0;   //設定每個Item型別繫結的圖片型別
                        break;
                    case "2":
                        lvi.ImageIndex = 1;
                        break;
                    case "3":
                        lvi.ImageIndex = 2;
                        break;

                    default:
                        break;
                }

                lvi.SubItems.Add(dt.Rows[i]["typeids"].ToString());   //後面新增的Item都為SubItems ,即為子項
                lvi.SubItems.Add(dt.Rows[i]["price"].ToString());
                this.listView1.Items.Add(lvi);//最後進行新增
            }
        }