近來的DEV搞更多。試圖尋找專業點的程序做,對這樣一個小小的研究。
本篇是多么真實,現在的記錄,可以通過點擊這條線的子表的內容相關聯的行中打開的列表。的影響,如下面的:
以下是實現過程:
1.設計器里面:
在MainView以下新建一個EntryView(create a new level) 這樣這個gridControl里面就有2個gridView了。
然后打開你的設計器(Run Designer)
假設你僅僅是測試,或者甲方對美丑沒要求時,對,你神馬都不須要設置了。
2.綁定數據
和正常的綁定一樣,gridControl.Datasource = DataSet.table[0];
不同的是。這個DataSet里面要有2個表,table1和table2須要是主從表的關系(主表有個字段是從表的外鍵,形成關系),比方:就不比方了,有點懶。
存儲過程:
select OutStockPlan.* from T_OutStock_Plan as OutStockPlan where OutStockPlan.BillDate< @maxDate_Invo and OutStockPlan.BillDate> @minDate_Invo
select ospe.* from T_OutStock_Plan as osp
left join T_OutStock_Plan_Entry ospe on osp.OnlyID=ospe.VoucherID
where osp.BillDate< @maxDate_Invo and osp.BillDate> @minDate_Invo
一個存儲過程同一時候返回2個表。第一條語句返回主表的行,第二條語句返回這些主表信息相應的子表行。僅僅要不嫌麻煩,你要分開運行也能夠。我還是有點懶。
Access運行:
WMSDS relationDS = this._WMSAccess.Select_OutPlanAndEntry_Relation(dateS, dateE); //運行上面的存儲過程。返回一個DataSet。包括table1和table2
DataRelation dr = new DataRelation("通知分錄", new DataColumn[] { relationDS.T_OutStock_Plan.Columns["OnlyID"] }, new DataColumn[] { relationDS.T_OutStock_Plan_Entry.Columns["VoucherID"] }); //new一個表關系,綁定2個表的鍵
relationDS.Relations.Add(dr); //加入表關系到dataset
前台綁定:
grid_VoucherPlanList.DataSource = relationDS.Tables["T_OutStock_Plan"]; //把主表當成datasource綁定給gridControl
收工。
追加:AllowOnlyOneMasterRowExpanded = True 那么同一時候僅僅能展開一行,假設是false就能夠隨意展開。
假設不想顯示那個通知分錄的tab,能夠設置ShowDetailTabs為false。 只是為毛是展開一個tab呢?是不是意味着一個主表關聯多個子表的時候能夠同一時候展開,我懶不試了。
再次追加:ColumnAutoWidth屬性。 當子View里面想bestFitColumn的時候,須要把子表的ColumnAutoWidth設置為false。 可是假設主View的ColumnAutoWidth設置為True的時候,子表的設置將無效, 所以想把列寬都fit的話2個view都設置為false吧。
再再次追加:假設想隱藏子View中的某一列的話,加入主View事件。例如以下:
private void gridView1_MasterRowExpanded(object sender, DevExpress.XtraGrid.Views.Grid.CustomMasterRowEventArgs e)
{
DevExpress.XtraGrid.Views.Grid.GridView aView = gridView1.GetDetailView(e.RowHandle, e.RelationIndex) as DevExpress.XtraGrid.Views.Grid.GridView;
if (aView != null)
{
aView.Columns["VoucherID"].Visible = false; //aView就是子View。設置VID 列為隱藏
aView.BestFitColumns();
}
}
版權聲明:本文博主原創文章,博客,未經同意不得轉載。