DataGridView的添加、編輯、更新.net 2007-09-25 09:54:14 閱讀86 評(píng)論2 字號(hào):大中小 訂閱 今天說(shuō)說(shuō)DataGridView吧,在一個(gè)小項(xiàng)目中用到了這個(gè)。面對(duì)的問(wèn)題是要在DataGridView中編輯、更新其中的值,然后怎么回寫(xiě)到數(shù)據(jù)庫(kù)中?一開(kāi)始的想法也是用循環(huán)讀取Cell,然后自己手動(dòng)回寫(xiě)到數(shù)據(jù)庫(kù)中,但總覺(jué)得不方便,認(rèn)為微軟會(huì)把這些工作封裝好的,就上網(wǎng)查了一下,發(fā)現(xiàn)確實(shí)有這個(gè)功能。先描述一下數(shù)據(jù)庫(kù)中的結(jié)構(gòu) 表1 表2 ID Name SexID ID Sex 1 A 1 1 男 2 B 2 2 女 3 C 2
一開(kāi)始的綁定是很容易的,但綁定后更新不了數(shù)據(jù)庫(kù)中的值,一更新就提示SexID的值是沒(méi)設(shè)置數(shù)據(jù)源的,因?yàn)镾exID是外鍵。還好在網(wǎng)上查到了一個(gè)折中的解決辦法,是在建立一個(gè)DataTable自己做映射: DataTable dtRelation = new DataTable(); 2.設(shè)置下拉列表列(DataGridViewComboxColumn)屬性: 下拉列表列.DataSource = dtRelation; 下拉列表列.DataPropertyName = 數(shù)據(jù)源.列名;
后來(lái)我發(fā)現(xiàn)其實(shí)不用DataTable也可以直接讓DataGridView完成綁定2個(gè)表的操作,而且更新時(shí)是可以直接更新的: SqlDataAdapter da; private void DataBind() ds = new DataSet(); dataGridView1.AutoGenerateColumns = false; //綁定數(shù)據(jù)源 Column1.DataPropertyName = ds.Tables["Students"].Columns[1].ColumnName; //初始化性別 string sqlSTR = "select * from Students"; 至此,我們已經(jīng)成功將DataGridView綁定了2個(gè)表,而且不用DataTable做中間層。關(guān)鍵就在: DataSource //設(shè)定要綁定的數(shù)據(jù)源 DataPropertyName //設(shè)置更新后回寫(xiě)到數(shù)據(jù)庫(kù)的哪一列,多表時(shí)要把數(shù)據(jù)源也寫(xiě)上 DisplayMember //設(shè)置要顯示在DataGridView的字段 ValueMember //設(shè)置對(duì)應(yīng)DisplayMember的實(shí)際值的字段 這幾個(gè)屬性上。
在更新回?cái)?shù)據(jù)源時(shí)還有一點(diǎn)要注意,就是綁定數(shù)據(jù)源時(shí)一定要有主鍵,這樣你只要設(shè)置SqlDataAdapter中的SelectCommand屬性,其余的UpdateCommand、DeleteCommand、InsertCommand屬性就會(huì)自動(dòng)設(shè)置、并完成相應(yīng)的功能: try 舉一反三、能成功綁定2個(gè)表,也一樣可以綁定多個(gè)表! |
|