原創|其它|編輯:郝浩|2012-10-09 14:01:54.000|閱讀 2693 次
概述:XtraGrid的關鍵類就是:GridControl和GridView。GridControl本身不顯示數據,數據都是顯示在 GridView/CardView/XXXXView中。GridControl是各類View的容器。所以要把握顯示,要從GridView這些類入 手。關于GridControl與GridView的關系,我不說了。下面給出一段代碼。實際應用中常用到。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
XtraGrid的關鍵類就是:GridControl和GridView。
GridControl本身不顯示數據,數據都是顯示在 GridView/CardView/XXXXView中。GridControl是各類View的容器。所以要把握顯示,要從GridView這些類入 手。
關于GridControl與GridView的關系,我不說了。下面給出一段代碼。實際應用中常用到。
public Form2() { InitializeComponent(); //不顯示內置的導航條。 gc1.UseEmbeddedNavigator = false; //不顯示分組的面板 gv1.OptionsView.ShowGroupPanel = false; gv2.OptionsView.ShowGroupPanel = false; //主動改變行高適應內容 gv1.OptionsView.RowAutoHeight = true; gv2.OptionsView.RowAutoHeight = true; //容許主動歸并單位格 gv1.OptionsView.AllowCellMerge = true; //若是主從表中,沒有找到從表內容也要顯示(默認是不顯示的) gv1.OptionsDetail.AllowExpandEmptyDetails = true; //顯示主動篩選行(結果跟Excel的主動篩選差不久不多) gv2.OptionsView.ShowAutoFilterRow = true; //使得GridView不克不及編輯 gv1.OptionsBehavior.Editable = false; gv2.OptionsBehavior.Editable = false; //內置編輯器顯示的模式 gv1.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.Click; //主從表顯示的功能是否可用 //gv1.OptionsDetail.EnableMasterViewMode = false; //若是顯示了主從表,每點開個加號,就會顯示一個Tabs,里面往往顯示了兩個面板。 //事實上沒須要如許干的。一般選擇封閉。封閉的對象是主GridView的此項屬性。 gv1.OptionsDetail.ShowDetailTabs = false; } private void btnExit_Click(object sender, EventArgs e) { this.Close(); } private void btnOk_Click(object sender, EventArgs e) { //設置連接字符串 DbHelperSQL.ConnectionString = DbHelperSQL.CreateConnectionString(@"BUDDHAS/SQLEXPRESS", "sa", "00000", "RTDMES"); DataSet ds = new DataSet(); //父GridView的數據 string sql = " sc_prno,sc_prna mespb04h"; DbHelperSQL.QueryD(sql,ds,"main"); //子GridView的數據 sql = " pa_name,pa_no,sc_prno mespb09h"; DbHelperSQL.QueryD(sql,ds,"son"); //這個是顯示主從表的關鍵,一、GridControl經由過程搜檢DataSet.Relations的內容來解析數據 //二、關鍵名必須與設計GridView的層級關系的level name雷同,不然,成果在料想之外。 DataRelation relation = new DataRelation("aa", ds.Tables["main"].Columns["sc_prno"], ds.Tables["son"].Columns["sc_prno"]); ds.Relations.Add(relation); //這也是一個關鍵,不克不及直接設為:ds,必須指明到表。 gc1.DataSource = ds.Tables["main"]; }
上方的代碼是顯示一個主從表。顯示主從表有些技能。文檔中還沒有說出來,俺摸索了一個晚上才搞出來。像上方看到的,事實上很簡單。
上方DbHelperSQL是我從CodeMatic 2.0中搞出來的,我本身批改了一下。
一、顯示主從表,這個解決了。
二、分組顯示,這是報表中經常要用到的,GridView的解決規劃很簡捷,只需將響應列的GroupIndex屬性設一下就成了:
在gridcontrol上擊右鍵,選run designer進入設計模式。在columns欄內點retrieve fields將數據源中所有字段導入進來。
點需要分組的字段,在其屬性欄的groupindex依次設為0,1..,在不須要分組的字段上對峙-1不變。
進入feature browse/summary /group sammary /summary items中增長要分組進行統計的字段。這里要設其fieldname字段名,showingroupcolumnfooter 顯示在哪一欄位,sammarytype顯示分組后統計的字段是進行sum(乞降,求均勻,最大值,最小值等)
在grouping /behavior /grneral /可設兩個屬性
同樣在feature browse/summary /total sammary 這些不是針對分組,而是針對所有行。在summaryitem中對要處理懲罰的列進行設置,首要設置須要處理懲罰列的column,summarytype.
當然設好后要將optionview的showfooter屬性設為true,表格底部會呈現一summary行。
補:還有三個屬性須要用,我們查詢的成果一般是只讀的,并且對每一個單位格最好無核心,故可同時選所有字段,設allowedit為false;allowfocus為false;readonly為true;
為XtraGrid的GridView加行號。示例代碼如下:
//設置行指導器的寬度(行指導器就是最左邊那列什么都不顯示的列) //默認景象下,若是要在里面顯示行號的話,寬度會不足,數字顯示不清楚 //所以要改一下寬度 gv1.IndicatorWidth = 20; private void gv1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e) { if (e.Info.IsRowIndicator && e.RowHandle >= 0) { e.Info.DisplayText = (e.RowHandle + 1).ToString().Trim(); } }
常用代碼:
//添加分組統計字段 gridView1.GroupSummary.Add(SummaryItemType.Count, "Product Name", gridView1.Columns["Product Name"]); gridView1.GroupSummary.Add(SummaryItemType.Average, "Unit Price", gridView1.Columns["Unit Price"]); //設置分組統計字段的顯示格局 ((GridSummaryItem)gridView1.GroupSummary[gridView1.GroupSummary.Count - 1]).DisplayFormat = "AVR={0:c}"; //設置分組字段 gridView1.Columns["Discontinued"].GroupIndex = 0; //打開所有分組 gridView1.ExpandAllGroups(); //為控件畫邊框 ControlPaint.DrawBorder3D(e.Graphics, r, (e.Info.State == DevExpress.Utils.Drawing.ObjectState.Pressed ? Border3DStyle.SunkenOuter : Border3DStyle.RaisedInner)); //核心單位格的列 gridview1.FocusedColumn //核心單位格地點行的行號 gridview1.FocusedRowHandle //核心單位格的值 gridview1.FocusedValue //指定單位格顯示的字符串值 gridview1.GetRowCellDisplayText(int rowHandler,string feildName) //指定單位格的值 gridview1.GetRowCellValue(int rowHandler,string feildName) //設置核心單位格地點行指定列的值 gridview1.SetFocusedRowCellValue(GridColumn col,object value) //設置核心單位格的值 gridview1.SetFocusedValue(object value) //設置指定單位格的值 //有了這個函數,就可以手工創建行了。 gridview1.SetRowCellValue(int rowHandler,string feildName,object value) gridview1.SetRowCellValue(int rowHandler,GridColumn col,object value) //添加新行的辦法 gv1.AddNewRow(); foreach (GridColumn col in gv1.Columns) { //用RowCount-1的辦法是不可的 //gv1.SetRowCellValue(gv1.RowCount-1, col, "aaaaa"); gv1.SetRowCellValue(gv1.FocusedRowHandle, col, "aaaaa"); } gv1.UpdateCurrentRow(); //按照綁定的數據源主動產生列 gv1.PopulateColumns(); //為列添加下拉列表(加其他類型如日期、UpDown同理) RepositoryItemLookUpEdit ri = new RepositoryItemLookUpEdit(); //ri.PopupWidth = 200; ri.DisplayMember = "sc_prna"; ri.ValueMember = "sc_prno"; DataTable dt1 = DbHelperSQL.QueryT(" sc_prno,sc_prna mespb04h"); ri.DataSource = dt1; gv1.Columns["sc_prno"].ColumnEdit = ri;
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網絡轉載