




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第詳解DataGridView控件的數(shù)據(jù)綁定目錄一、非綁定模式二、綁定模式示例程序:1、界面設(shè)計如下圖:2、代碼實現(xiàn)如下:使用DataGridView控件,可以顯示和編輯來自多種不同類型的數(shù)據(jù)源的表格數(shù)據(jù)。
將數(shù)據(jù)綁定到DataGridView控件非常簡單和直觀,在大多數(shù)情況下,只需設(shè)置DataSource屬性即可。在綁定到包含多個列表或表的數(shù)據(jù)源時,只需將DataMember屬性設(shè)置為指定要綁定的列表或表的字符串即可。
一、非綁定模式
所謂的非綁定模式就是DataGridView控件顯示的數(shù)據(jù)不是來自于綁定的數(shù)據(jù)源,而是可以通過代碼手動將數(shù)據(jù)填充到DataGridView控件中,這樣就為DataGridView控件增加了很大的靈活性。我們先來了解一下DataGridView控件有多種類型的列,而這些類型都是間接的或直接的繼承了DataGridViewColumns累,下面是我們能夠經(jīng)常用到的幾種類型:
類說明DataGridViewTextBoxColumn與基于文本的值一起使用,在綁定到數(shù)字和字符串類型的值時自動生成DataGridViewCheckBoxColumn與boolean和checkState值一起使用,在綁定到這些類型的值時自動生成DataGridViewImageColumn用于顯示圖像,在綁定到字節(jié)數(shù)組、Image對象或Icon對象自動生成DataGridViewButtonColumn用于在單元格中顯示按鈕,不會在綁定時自動生成,通常用來做未綁定列DataGridViewComboBoxColumn用戶在單元格中顯示下拉列表,不會在綁定時自動生成,通常需要手動進行數(shù)據(jù)綁定DataGridViewLinkColumn用于在單元格中顯示超鏈接,不會在綁定時自動生成,通常需要進行手動綁定數(shù)據(jù)
二、綁定模式
就是將已經(jīng)存在的數(shù)據(jù)綁定到DataGridView控件上。將數(shù)據(jù)綁定到DataGridView控件上非常簡單和直觀,在大多數(shù)情況下,只需設(shè)置DataSource屬性即可。在綁定到包含多個列表或表的數(shù)據(jù)源時,只需將DataMember屬性設(shè)置為指定要綁定的列表或表的字符串即可。
DataGridView控件支持標準Windows窗體數(shù)據(jù)綁定模型,因此該控件將綁定到下表所述的類的實例:
1、任何實現(xiàn)IList接口的類,包括一維數(shù)組。2、任何實現(xiàn)IListSource接口的類,例如DataTable和DataSet。3、任何實現(xiàn)IBindingList接口的類,例如BindingList(OfT)類。4、任何實現(xiàn)IBindingListView接口的類,例如BindingSource類。
通常綁定到BindingSource組件,并將BindingSource組件綁定到其他數(shù)據(jù)源或使用業(yè)務對象填充該組件。BindingSource組件為首選數(shù)據(jù)源,因為該組件可以綁定到各種數(shù)據(jù)源,并可以自動解決許多數(shù)據(jù)綁定問題。
DataGridView綁定數(shù)據(jù)源的幾種方式:
第一種:
DataSetds=newDataSet();
this.dataGridView1.DataSource=ds.Tables[0];
第二種:
DataTabledt=newDataTable();
this.dataGridView1.DataSource=dt;
第三種:
DataSetds=newDataSet();
this.dataGridView1.DataSource=ds.Tables["表名"];
第四種:
DataSetds=newDataSet();
this.dataGridView1.DataSource=ds;
this.dataGridView1.DataMember="表名";//必須要設(shè)置DataMember屬性,指定要綁定到DataSet中的哪張表
第五種:
ArrayListal=newArrayList();
this.dataGridView1.DataSource=al;
第六種:
Dictionarystring,stringdict=newDictionarystring,string
this.dataGridView1.DataSource=dict;
第七種:可以排序
DataViewdv=newDataView();
this.dataGridView1.DataSource=dv;
示例程序:
下面的程序中,演示上面的各種綁定方式
1、界面設(shè)計如下圖:
2、代碼實現(xiàn)如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingSystem.Windows.Forms;
usingSystem.Configuration;
usingSystem.Data.SqlClient;
namespaceDataGridViewDataBinding
publicpartialclassFrmMain:Form
publicFrmMain()
InitializeComponent();
///summary
///非綁定模式
////summary
///paramname="sender"/param
///paramname="e"/param
privatevoidbtn_NotBinding_Click(objectsender,EventArgse)
InitDgvByCustom();
///summary
///通過自定義列的方式初始化DataGridView
////summary
privatevoidInitDgvByCustom()
//創(chuàng)建列
InitDgvTextBoxColumn(this.dgv_Demo,DataGridViewContentAlignment.MiddleCenter,"UserID","用戶編號",20,true,true);
InitDgvTextBoxColumn(this.dgv_Demo,DataGridViewContentAlignment.MiddleCenter,"UserName","用戶名",20,false,true);
InitDgvCheckBoxColumn(this.dgv_Demo,DataGridViewContentAlignment.MiddleCenter,"Sex","性別",false,true);
//創(chuàng)建行
DataGridViewRowdrRow1=newDataGridViewRow();
drRow1.CreateCells(this.dgv_Demo);
//設(shè)置單元格的值
drRow1.Cells[0].Value=1;
drRow1.Cells[1].Value="測試";
drRow1.Cells[2].Value=true;
//將新創(chuàng)建的行添加到DataGridView中
this.dgv_Demo.Rows.Add(drRow1);
//設(shè)置DataGridView的屬性
this.dgv_Demo.AllowUserToAddRows=false;//不自動產(chǎn)生最后的新行
///summary
///創(chuàng)建DataGridView的TextBox列
////summary
///paramname="dgv"要創(chuàng)建列的DataGridView/param
///paramname="_alignmeng"設(shè)置列的對齊方式/param
///paramname="_columnName"列名/param
///paramname="_headerText"顯示的標題名/param
///paramname="_maxInputLength"可輸入的最大長度/param
///paramname="_readOnly"設(shè)置列是否只讀true只讀false讀寫/param
///paramname="_visible"設(shè)置列是否可見true可見false不可見/param
privatevoidInitDgvTextBoxColumn(DataGridViewdgv,DataGridViewContentAlignment_alignmeng,
string_columnName,string_headerText,int_maxInputLength,bool_readOnly,bool_visible)
//實例化一個DataGridViewTextBoxColumn列
DataGridViewTextBoxColumntbc=newDataGridViewTextBoxColumn();
//設(shè)置對齊方式
tbc.HeaderCell.Style.Alignment=_alignmeng;
//設(shè)置列名
tbc.Name=_columnName;
//設(shè)置標題
tbc.HeaderText=_headerText;
//設(shè)置最大輸入長度
tbc.MaxInputLength=_maxInputLength;
//設(shè)置是否只讀
tbc.ReadOnly=_readOnly;
//設(shè)置是否可見
tbc.Visible=_visible;
//將創(chuàng)建的列添加到DataGridView中
dgv.Columns.Add(tbc);
///summary
///創(chuàng)建DataGridView的CheckBox列
////summary
///paramname="dgv"要創(chuàng)建列的DataGridView/param
///paramname="_alignmeng"設(shè)置列的對齊方式/param
///paramname="_columnName"列名/param
///paramname="_headerText"顯示的標題名/param
///paramname="_readOnly"設(shè)置列是否只讀true只讀false讀寫/param
///paramname="_visible"設(shè)置列是否可見true可見false不可見/param
privatevoidInitDgvCheckBoxColumn(DataGridViewdgv,DataGridViewContentAlignment_alignmeng,
string_columnName,string_headerText,bool_readOnly,bool_visible)
//實例化一個DataGridViewTextBoxColumn列
DataGridViewCheckBoxColumncbc=newDataGridViewCheckBoxColumn();
//設(shè)置對齊方式
cbc.HeaderCell.Style.Alignment=_alignmeng;
//設(shè)置列名
cbc.Name=_columnName;
//設(shè)置標題
cbc.HeaderText=_headerText;
//設(shè)置是否默認選中
//cbc.Selected=_selected.Equals("男")true:false;
//設(shè)置是否只讀
cbc.ReadOnly=_readOnly;
//設(shè)置是否可見
cbc.Visible=_visible;
//將創(chuàng)建的列添加到DataGridView中
dgv.Columns.Add(cbc);
///summary
///綁定模式
////summary
///paramname="sender"/param
///paramname="e"/param
privatevoidbtn_Binding_Click(objectsender,EventArgse)
InitDgvByBinding();
///summary
///通過數(shù)據(jù)綁定的方式初始化DataGridView
////summary
privatevoidInitDgvByBinding()
#region綁定單一數(shù)據(jù)源
stringstrSQL="select*fromusers";
//設(shè)置數(shù)據(jù)源
DataTabledtSource=GetDataTable(strSQL);
//直接綁定到表
//this.dgv_Demo.DataSource=dtSource;
//綁定到DataView
DataViewdv=dtSource.DefaultView;
//按照Password字段降序排序
dv.Sort="Passworddesc";
this.dgv_Demo.DataSource=dv;
#endregion
////不自動產(chǎn)生最后的新行
this.dgv_Demo.AllowUserToAddRows=false;
///summary
///都市數(shù)據(jù)庫數(shù)據(jù)
////summary
///paramname="strSQL"/param
///returns/returns
privateDataTableGetDataTable(stringstrSQL)
DataTabledtDgv=newDataTable();
//dtDgv.TableName="";
stringstrConn=ConfigurationManager.ConnectionStrings["DbConn"].ConnectionString;
SqlConnectionconn=newSqlConnection(strConn);
SqlCommandcmd=newSqlCommand(strSQL,conn);
SqlDataAdapteradapter=newSqlDataAdapter(cmd);
conn.Open();
adapter.Fill(dtDgv);
catch(Exceptionex)
finally
conn.Close();
returndtDgv;
privateDataSetGetDataSet()
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《LC指令應用》教學課件
- 2025年1月企業(yè)管理實務??荚囶}(含參考答案解析)
- 2024年1月美發(fā)師四級模擬題(含答案解析)
- 搬運設(shè)備智能控制技術(shù)研究與發(fā)展趨勢考核試卷
- 紙張加工中的防潮技術(shù)考核試卷
- 橡膠合成催化劑的選擇與活性評價考核試卷
- 精加工產(chǎn)品差異化策略考核試卷
- 天然氣開采業(yè)的風險管理與運營規(guī)范考核試卷
- 玻璃儀器表面修飾與功能化考核試卷
- 租書業(yè)務與社區(qū)教育融合考核試卷
- 煙霧病和煙霧綜合征診斷與治療中國專家共識(2024版)
- DBJ03-107-2019 房屋建筑和市政工程施工危險性較大的分部分項工程安全管理規(guī)范
- 2025年貴州中考二輪道德與法治專題復習 題型三 判斷與分析
- 《Hadoop電信大數(shù)據(jù)的用戶分群算法研究與實現(xiàn)》
- 《烈士陵園游》課件
- 《中國現(xiàn)代影視作品中反派人物形象塑造歷程與特點淺析》15000字(論文)
- 現(xiàn)在醫(yī)療現(xiàn)狀
- 《零星工程項目監(jiān)理方案》
- 年度污水處理托管服務 投標方案(技術(shù)標 )
- 煤礦調(diào)度工作內(nèi)容和方法
- 合規(guī)培訓計劃方案
評論
0/150
提交評論