原創(chuàng)|其它|編輯:郝浩|2012-10-09 16:50:49.000|閱讀 1453 次
概述:本文通過(guò)代碼介紹了DevExpress XtraGrid網(wǎng)格控件的入門攻略——如何實(shí)現(xiàn)主從子表設(shè)計(jì)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
//錄數(shù)窗口 public DataSet ds_jj(string hth,string dh2) { DataSet ds=newDataSet();// DataSet ds_scgjb = new DataSet();//主表 DataSet ds_jjmx = new DataSet();//從表 ds_scgjb = dal_scgj.GetItemsByHTDH(hth, dh2); ds_jjmx = dal_jjmx.GetItemsByHTDH(hth, dh2); ds.Tables.Add(ds_scgjb.Tables[0].Copy()); ds.Tables.Add(ds_jjmx.Tables[0].Copy()); //主從字表約束字段:這里有三個(gè)約束字段 DataColumn[] column3 =newDataColumn[] { ds.Tables["jj_gjb"].Columns["合同號(hào)"], ds.Tables["jj_gjb"].Columns["袋 號(hào)"], ds.Tables["jj_gjb"].Columns["工序代碼"] }; DataColumn[] column4 =newDataColumn[] { ds.Tables["jj_jjmx"].Columns["合同號(hào)"], ds.Tables["jj_jjmx"].Columns["袋 號(hào)"], ds.Tables["jj_jjmx"].Columns["工序代碼"] }; //建立約束名 if (ds.Relations.IndexOf("jjgz") < 0) { ds.Relations.Add("jjgz", column3, column4); } return ds; }
主表有個(gè)事件gridView1_MasterRowExpanded,可以撲著到子表,可以對(duì)字表進(jìn)行外觀設(shè)計(jì):?jiǎn)卧竦膶挾龋欠窬庉嫞欠窈Y選,是否顯示等等設(shè)置,還有子表的事件設(shè)計(jì),例如:
detailView.CellValueChanged += new DevExpress.XtraGrid.Views.Base.CellValueChangedEventHandler(this.detailView_CellValueChanged);
再寫委托的具體detailView_CellValueChanged事件內(nèi)容。這樣確實(shí)可以達(dá)到我們的想要的功能。
好象沒(méi)問(wèn)題了?
分析:原來(lái)每展開(kāi)一個(gè)子表,gridView1_MasterRowExpanded就運(yùn)行多少次,每個(gè)子表就都格式一下外觀設(shè)計(jì),果然費(fèi)事,以上設(shè)計(jì)只適合單個(gè)打開(kāi)子表的用途。
辦法1:用數(shù)組性子表控制,還是不行
辦法2,用自定義一個(gè)表,設(shè)置好外觀,然后繼承該表,也不行。
以上都是全部用代碼控制的操作。最后一個(gè)辦法:
辦法3,可視化設(shè)計(jì):
主表:gridView1,
從表::gridView2
在gridView2設(shè)置好外觀,事件都寫好,只要把DataSet的主表和子表如何關(guān)聯(lián)起來(lái)加載進(jìn)去,就一切OK.摸索了很久,才知道其中的奧妙,DataSet的主表和子表的約束名是”jjgz”,只要把”Level1”改成約束名”jjgz”,就OK了。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載