詳解DataGridView控件的數(shù)據(jù)綁定_第1頁
詳解DataGridView控件的數(shù)據(jù)綁定_第2頁
詳解DataGridView控件的數(shù)據(jù)綁定_第3頁
詳解DataGridView控件的數(shù)據(jù)綁定_第4頁
詳解DataGridView控件的數(shù)據(jù)綁定_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論