C#.NET 通用控件數據源綁定類


using System.Data;
using System.Collections;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Windows.Forms;

namespace Nbjjy.Utilities
{
    public static class ControlHelper
    {
        #region 數據源

        /// <summary>
        /// 獲取或設置源,該源包含用於填充控件中的項的值列表。
        /// </summary>
        private static object dataSource;

        public static object DataSource
        {
            get
            {
                if (dataSource is DataSet)
                {
                    DataSet ds = dataSource as DataSet;
                    dataSource = ds.Tables[0];
                }
                else if (dataSource is DataTable)
                {
                    DataTable dt = dataSource as DataTable;
                    dataSource = dt;
                }
                else if (dataSource is DataView)
                {
                    DataView dv = dataSource as DataView;
                    dataSource = dv;
                }
                else if (dataSource is IDataReader)
                {
                    IDataReader dr = dataSource as IDataReader;
                    dataSource = dr;
                }
                else if (dataSource is IEnumerable)
                {
                    IEnumerable objList = dataSource as IEnumerable;
                    List<object> list = new List<object>();
                    foreach (object obj in objList)
                    {
                        list.Add(obj);
                    }
                    dataSource = list;
                }
                return dataSource;
            }

            set
            {
                dataSource = value;
            }
        }

        #endregion

        #region WebUI綁定Control

        /// <summary>
        ///WebUI綁定Control
        /// </summary>
        /// <param name="control">定義由所有 ASP.NET 服務器控件共享的屬性、方法和事件。</param>
        /// <param name="dataSource">獲取或設置源,該源包含用於填充控件中的項的值列表。</param>
        public static void BindControl(System.Web.UI.Control control, object dataSource)
        {
            DataSource = dataSource;
            if (control is System.Web.UI.WebControls.DataList)
            {
                (control as System.Web.UI.WebControls.DataList).DataSource = DataSource;
                (control as System.Web.UI.WebControls.DataList).DataBind();
            }
            else if (control is System.Web.UI.WebControls.GridView)
            {
                (control as System.Web.UI.WebControls.GridView).DataSource = DataSource;
                (control as System.Web.UI.WebControls.GridView).DataBind();
            }
            else if (control is System.Web.UI.WebControls.Repeater)
            {
                (control as System.Web.UI.WebControls.Repeater).DataSource = DataSource;
                (control as System.Web.UI.WebControls.Repeater).DataBind();
            }
        }

        /// <summary>
        ///WebUI綁定Control
        /// </summary>
        /// <param name="control">定義由所有 ASP.NET 服務器控件共享的屬性、方法和事件。</param>
        /// <param name="dataSource">獲取或設置源,該源包含用於填充控件中的項的值列表。</param>
        /// <param name="dataTextField">獲取或設置為列表項提供文本內容的數據源字段。</param>
        /// <param name="dataValueField">獲取或設置為各列表項提供值的數據源字段。</param>
        public static void BindControl(System.Web.UI.Control control, object dataSource, string dataTextField, string dataValueField)
        {
            DataSource = dataSource;
            if (control is System.Web.UI.WebControls.CheckBoxList)
            {
                (control as System.Web.UI.WebControls.CheckBoxList).DataSource = DataSource;
                (control as System.Web.UI.WebControls.CheckBoxList).DataTextField = dataTextField;
                (control as System.Web.UI.WebControls.CheckBoxList).DataValueField = dataValueField;
                (control as System.Web.UI.WebControls.CheckBoxList).DataBind();
            }
            else if (control is System.Web.UI.WebControls.DropDownList)
            {
                (control as System.Web.UI.WebControls.DropDownList).DataSource = DataSource;
                (control as System.Web.UI.WebControls.DropDownList).DataTextField = dataTextField;
                (control as System.Web.UI.WebControls.DropDownList).DataValueField = dataValueField;
                (control as System.Web.UI.WebControls.DropDownList).DataBind();
            }
            else if (control is System.Web.UI.WebControls.RadioButtonList)
            {
                (control as System.Web.UI.WebControls.RadioButtonList).DataSource = DataSource;
                (control as System.Web.UI.WebControls.RadioButtonList).DataTextField = dataTextField;
                (control as System.Web.UI.WebControls.RadioButtonList).DataValueField = dataValueField;
                (control as System.Web.UI.WebControls.RadioButtonList).DataBind();
            }
            else if (control is System.Web.UI.WebControls.BulletedList)
            {
                (control as System.Web.UI.WebControls.BulletedList).DataSource = DataSource;
                (control as System.Web.UI.WebControls.BulletedList).DataTextField = dataTextField;
                (control as System.Web.UI.WebControls.BulletedList).DataValueField = dataValueField;
                (control as System.Web.UI.WebControls.BulletedList).DataBind();
            }
        }

        #endregion

        #region WinUI綁定Control


        /// <summary>
        ///  DataGridView綁定
        /// </summary>
        /// <param name="dataGridView">在可自定義的網格中顯示數據。</param>
        /// <param name="dataSource">獲取或設置數據源中 System.Windows.Forms.DataGridView 顯示其數據的列表或表的名稱。</param>
        public static void BindControl(System.Windows.Forms.DataGridView dataGridView, object dataSource)
        {
            DataSource = dataSource;
            dataGridView.DataSource = DataSource;
        }


        /// <summary>
        ///  ListView綁定
        /// </summary>
        /// <param name="listView">表示 Windows 列表視圖控件,該控件顯示可用四種不同視圖之一顯示的項集合。</param>
        /// <param name="text">獲取或設置該項的文本。</param>
        /// <param name="value">基於數組創建新子項,並將其添加到集合中。[可空參數]</param>
        /// <param name="view">每個項都顯示為一個最大化圖標,在它的下面有一個標簽。</param>
        public static void BindControl(System.Windows.Forms.ListView listView, string text, string[] value, System.Windows.Forms.View view)
        {
            listView.View = view;
            ListViewItem lvi = new ListViewItem();
            lvi.Text = text;
            listView.Items.Add(lvi);
            if (value != null)
            {
                lvi.SubItems.AddRange(value);
            }
        }


        /// <summary>
        /// WinUI綁定Control
        /// </summary>
        /// <param name="control">定義控件的基類,控件是帶有可視化表示形式的組件。ID</param>
        /// <param name="dataSource">獲取或設置此 System.Windows.Forms.Control 的數據源。</param>
        /// <param name="displayMember">獲取或設置要為此 System.Windows.Forms.Control 顯示的屬性。</param>
        /// <param name="valueMember">獲取或設置一個屬性,該屬性將用作 System.Windows.Forms.Control 中的項的實際值。</param>
        public static void BindControl(System.Windows.Forms.Control control, object dataSource, string displayMember, string valueMember)
        {
            DataSource = dataSource;
            if (control is System.Windows.Forms.ComboBox)
            {
                (control as System.Windows.Forms.ComboBox).DataSource = DataSource;
                (control as System.Windows.Forms.ComboBox).DisplayMember = displayMember;
                (control as System.Windows.Forms.ComboBox).ValueMember = valueMember;
            }
            else if (control is System.Windows.Forms.CheckedListBox)
            {
                (control as System.Windows.Forms.CheckedListBox).DataSource = DataSource;
                (control as System.Windows.Forms.CheckedListBox).DisplayMember = displayMember;
                (control as System.Windows.Forms.CheckedListBox).ValueMember = valueMember;
            }
            else if (control is System.Windows.Forms.ListBox)
            {
                (control as System.Windows.Forms.ListBox).DataSource = DataSource;
                (control as System.Windows.Forms.ListBox).DisplayMember = displayMember;
                (control as System.Windows.Forms.ListBox).ValueMember = valueMember;
            }
        }

        #endregion
    }
}

調用方法:
           List<Model.BaseItemsType> list = BLL.BaseItemsType.GetList("", "");
            foreach (Model.BaseItemsType model in list)
            {
                ControlHelper.BindControl(this.listView1, model.FullName, null, View.List);
            }
            ControlHelper.BindControl(this.dataGridView1, list);
            ControlHelper.BindControl(this.comboBox1, list, "FullName", "Id");
            ControlHelper.BindControl(this.listBox1, list, "FullName", "Id");
            ControlHelper.BindControl(this.checkedListBox1, list, "FullName", "Id");

 //DataTable list = BLL.BaseItemsType.GetDataTable("", "");
            //DataSet list = BLL.BaseItemsType.GetDataSet("", "");
            //DataView list = BLL.BaseItemsType.GetDataView("", "");
            //for (int i = 0; i < list.Count; i++)
            //{
            //    ControlHelper.BindControl(this.listView1, list.Table.Rows[i]["FullName"].ToString(), null, View.List);
            //}
            //for (int i = 0; i < list.Tables[0].Rows.Count; i++)
            //{
            //    ControlHelper.BindControl(this.listView1, list.Tables[0].Rows[i]["FullName"].ToString(), null, View.List);
            //}
            //for (int i = 0; i < list.Rows.Count; i++)
            //{
            //    ControlHelper.BindControl(this.listView1, list.Rows[i]["FullName"].ToString(), null, View.List);
            //}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM