有没有人知道Listview数据绑定该怎么做

解决方案 »

  1.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    namespace NClay.Windows
    {
        public delegate void EventDataListItemHandler<T>(object source,T e);
        public abstract class DataListBase<T>
        {
            public event EventDataListItemHandler<T> ItemClick;
            public event EventDataListItemHandler<T> ItemDoubleClick;
            public event EventDataListItemHandler<T> ItemDataBound;
            public DataListBase(ListView view)
            {
                mView = view;
                Init();
            }
            public DataListBase(ListView view, EventDataListItemHandler<T> click,
                EventDataListItemHandler<T> dbclick, EventDataListItemHandler<T> bound)
            {
                mView = view;
                ItemClick += click;
                ItemDoubleClick += dbclick;
                ItemDataBound += bound;
                Init();
            }
            private void Init()
            {
                mView.MouseDown += new MouseEventHandler(view_mousedown);
                mView.MouseClick += new MouseEventHandler(view_mouseclick);
                mView.MouseDoubleClick += new MouseEventHandler(view_mousedbclick);
                mView.SelectedIndexChanged += new EventHandler(view_selectchange);
                mView.Columns.Clear();
                foreach (ColumnHeader item in Columns)
                {
                    mView.Columns.Add(item);
                }
            }
            private ListView mView;
            private ListViewItem mSelectItem;
            protected abstract ListView.ColumnHeaderCollection Columns
            {
                get;
            }
            protected abstract ListViewItem CreateItem(T e);
            private IList<T> mDataSource;
            public IList<T> DataSource
            {
                get
                {
                    return mDataSource;
                }
                set
                {
                    mDataSource = value;
                    OnDataBind();
                }
            }
            private void OnDataBind()
            {
                mView.Items.Clear();
                ListViewItem vitem;
                foreach (T item in DataSource)
                {
                    vitem = CreateItem(item);
                    mView.Items.Add(vitem);
                    mView.Tag = item;
                    OnDataBound(item);
                }
                
            }
            protected virtual void OnItemClick(T e)
            {
                if (ItemClick != null)
                    ItemClick(this, e);
            }
            protected virtual void OnItemDoubleClick(T e)
            {
                if (ItemDoubleClick != null)
                    ItemDoubleClick(this, e);
            }
            protected virtual void OnDataBound(T e)
            {
                if (ItemDataBound != null)
                    ItemDataBound(this, e);
            }
            private void view_mousedown(object source, MouseEventArgs e)
            {
                mSelectItem = mView.GetItemAt(e.X, e.Y);
            }
            private void view_mouseclick(object source, MouseEventArgs e)
            {
                if (mSelectItem != null)
                    OnItemClick((T)mSelectItem.Tag);
            }
            private void view_mousedbclick(object source, MouseEventArgs e)
            {
                if (mSelectItem != null)
                    OnItemDoubleClick((T)mSelectItem.Tag);
            }
            private void view_selectchange(object source, EventArgs e)
            {
                SelectItems.Clear();
                foreach (ListViewItem item in mView.SelectedItems)
                {
                    SelectItems.Add((T)item.Tag);
                }
            }
            public IList<T> SelectItems
            {
                get
                {
                    return mSelectItems;
                }
            }
            private IList<T> mSelectItems = new List<T>();        
        }
    }
      

  2.   

    http://www.4oa.com/Article/html/6/34/497/2005/18068.html
      

  3.   

    private void button1_Click(object sender, EventArgs e)
            {
                listView1.Items.Clear();
                listView1.Columns.Clear();
                SqlConnection con = new SqlConnection("server=.;database=pubs;user id=sa;password=123");
                con.Open();
                DataSet dst = new DataSet();
                SqlCommand cmd =new SqlCommand ("select title_id,type from titles",con );
                SqlDataAdapter dap = new SqlDataAdapter(cmd);
                dap.Fill(dst);
                con.Close();
                this.listView1.Columns.Add("ID编号", 80, HorizontalAlignment.Center);
                this.listView1.Columns.Add("类型", 80, HorizontalAlignment.Center);//增加列标题
                listView1.View = View.Details;
                listView1.GridLines = true;//显示网格线。。
                string[] str = new string[2];
                foreach (DataRow row in dst.Tables[0].Rows)
                {
                    str[0] = row["title_id"].ToString();
                    str[1] = row["type"].ToString();
                    ListViewItem item = new ListViewItem(str, 0);
                    listView1.Items.Add(item);
                }
            } 
      

  4.   

    4楼这个不能叫绑定。LISTVIEW的绑定麻烦,加载大数据量数据又慢。如果没有硬性规定,用DATAGRIDVIEW替代他显示数据。
      

  5.   

    那请问什么样叫绑定呢?别人就是要用listview,提什么DATAGRIDVIEW呢?
    不解决实际问题的就别在这插嘴!
      

  6.   

    ListView 没有内置绑定功能的支持只有一项一项的添加,如 4楼