原創|其它|編輯:郝浩|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@ke049m.cn
文章轉載自:網絡轉載