一种得到数据源方法的思考

           今天看了listview和listbox两个控件的视频教程,其中说了一种绑定数据源的方法,感觉不错,所以贴出来与大家一起分想

         比如先在工程里建一个Product类:(在此类中可以连接数据库)

        此类代码如下 :

       

using System;
using System.Collections.Generic;
using System.Text;

namespace winform1
{
    class Product//创建一个Product类
    {
        public Product(string  code, string name)
        {
            _code = code;
            _name = name;
        }

        public Product(string code, string name, int score)//重载构造函数
        {
            _code = code;
            _name = name;
            _score = score;
        }

        private string  _code;
        public string  Code
        {
            get { return _code; }
            set { _code = value; }
        }

        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }

        private int _score;
        public int Score
        {
            get { return _score; }
            set { _score = value; }

        }
            
        public override string ToString()//重写tostring()方法,以便按照想要的格式输出
     
            return _code + "-" + _name;
        }

        public static IList GetAllProduct()
        {
            IList all = new List();
            all.Add(new Product("001", "苹果"));
            all.Add(new Product("002", "橡胶"));
            all.Add(new Product("003", "花生"));
            return all;
        }


        public static IList GetAllRichProduct()//创建两个静态方法
        {
            IList all = new List();
            all.Add(new Product("001", "苹果",100));
            all.Add(new Product("002", "橡胶",200));
            all.Add(new Product("003", "花生",300));//这里可以得到数据库中的数据 
            return all;
        }

    }
}
然后就可以在其它文件中调用此类了:
    比如以下是一个以Product为数据源来填充listview内容的方法:
  private void button2_Click(object sender, EventArgs e)
   {
     this.listView1.Items.Clear();//首先清除原有所有记录

            IList all = Product.GetAllRichProduct();//调用方法,返回all

            foreach (Product prod in all)//遍历all中所有记录
            {
                string[] Str = new string[3];//得到此记录相应字段的值
                Str[0] = prod.Code;
                Str[1] = prod.Name;
                Str[2] = prod.Score.ToString();
                ListViewItem item = new ListViewItem(Str, 0);
                this.listView1.Items.Add(item);//填充
            }

        }

 

另外,此数据源还可以用来作为listBox的数据源:

     比如 :

     

 private void button1_Click(object sender, EventArgs e)//此事件中是向listbox填充数据
        {
            IList all = Product.GetAllProduct();
            foreach (Product prod in all)
            {
                this.comboBox1.Items.Add(prod);//填充comboBox控件内容
            }
        }
//以下方法是选 中listbox某行后得到相应字段值:
 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            MessageBox.Show(this.comboBox1.SelectedIndex.ToString());//得到索引

            Product prod = (Product)this.comboBox1.SelectedItem; //将选中行强转化为product类型

            string myProd = prod.Name;//得到Name段的值 ,还可以得到其它的字段的值
            MessageBox.Show(myProd.ToString());
        }

你可能感兴趣的:(一种得到数据源方法的思考)