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