Devexpress GridControl


 [一籃飯特稀原創,轉載請注明出處http://www.cnblogs.com/wanghafan/archive/2012/02/09/2344241.html]

--Devexpress GridControl repositoryItemCalcEdit 數值 不為空

View Code
1 AllowNullInput=False;

--Devexpress GridControl GridView 點擊 單元格 選中內容

View Code
1 GridView-OptionsBehavior-EditorShowMode設置成MouseUp
2
3 另外如果是treeList則設置treeList-OptionsBehavior-ShowEditorOnMouseUp為True

--Devexpress GridControl 向上 向下 最上 最下 排序

View Code
  1 private void toolStripButton_向上_Click(object sender, EventArgs e)
2 {
3 UpOrDown(gridView, true);
4 }
5
6 private void toolStripButton_向下_Click(object sender, EventArgs e)
7 {
8 UpOrDown(gridView, false);
9 }
10
11 private void toolStripButton_最下_Click(object sender, EventArgs e)
12 {
13 TopOrLast(gridView, false);
14 }
15
16 private void toolStripButton_最上_Click(object sender, EventArgs e)
17 {
18 TopOrLast(gridView, true);
19 }
20
21 private void UpOrDown(DevExpress.XtraGrid.Views.Grid.GridView GridView, bool ISUpOrDown)
22 {
23 DataRow row = GridView.GetFocusedDataRow();
24 if (ISUpOrDown)
25 {
26 if (!GridView.IsFirstRow)
27 GridView.MovePrev();
28 else
29 return;
30 }
31 else
32 {
33 if (!GridView.IsLastRow)
34 GridView.MoveNext();
35 else
36 return;
37 }
38 DataRow Pretrow = GridView.GetFocusedDataRow();
39 if (Pretrow != null && row != null)
40 {
41 DataRow IRow = dt_F_表格編號.NewRow();
42 for (int k = 0; k < row.ItemArray.Length; k++) IRow[k] = Pretrow[k];
43 for (int i = 0; i < row.ItemArray.Length; i++) Pretrow[i] = row[i];
44 for (int j = 0; j < row.ItemArray.Length; j++) row[j] = IRow[j];
45 }
46 }
47
48 private void TopOrLast(DevExpress.XtraGrid.Views.Grid.GridView GridView, bool ISTopOrLast)
49 {
50 int rowA = GridView.FocusedRowHandle;
51 int rowB = 0;
52 if (ISTopOrLast)
53 {
54 if (!GridView.IsFirstRow)
55 {
56 GridView.MoveFirst();
57 rowB = GridView.FocusedRowHandle;
58 }
59 else
60 return;
61 }
62 else
63 {
64 if (!GridView.IsLastRow)
65 {
66 GridView.MoveLast();
67 rowB = GridView.FocusedRowHandle;
68 }
69 else
70 return;
71 }
72
73 if (rowA!=rowB)
74 {
75 if (rowA < rowB) //最下
76 {
77 for (int z = rowA+1; z <= rowB; z++)
78 {
79 DataRow row = gridView.GetDataRow(rowA);
80 DataRow newrow = gridView.GetDataRow(z);
81 DataRow IRow = dt_F_表格編號.NewRow();
82 for (int k = 0; k < row.ItemArray.Length; k++) IRow[k] = newrow[k];
83 for (int i = 0; i < row.ItemArray.Length; i++) newrow[i] = row[i];
84 for (int j = 0; j < row.ItemArray.Length; j++) row[j] = IRow[j];
85 rowA++;
86 }
87 }
88 else //最上
89 {
90 for (int z = rowA-1; rowB>=0; z--)
91 {
92 DataRow row = gridView.GetDataRow(rowA);
93 DataRow newrow = gridView.GetDataRow(z);
94 DataRow IRow = dt_F_表格編號.NewRow();
95 for (int k = 0; k < row.ItemArray.Length; k++) IRow[k] = newrow[k];
96 for (int i = 0; i < row.ItemArray.Length; i++) newrow[i] = row[i];
97 for (int j = 0; j < row.ItemArray.Length; j++) row[j] = IRow[j];
98 rowA--;
99 if (z == 0) return;
100 }
101 }
102 }
103 }

--Devexpress GridControl 滾動條

View Code
1 GridControl-Run Designer-OptionsView-ColunmAutoWidth=False

--Devexpress GridControl 單元格 只讀

View Code
 1 控件本身不支持單個單元格的只讀效果,只能實現整列的只讀,因此我們自己虛擬只讀效果
2 private void gridView_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e)
3 {
4 if (e.Column != this.gc)
5 {
6 DataRow dataRow = this.gridView.GetDataRow(e.RowHandle);
7 if ((dataRow != null) && (dataRow[e.Column.FieldName] is DBNull))
8 {
9 e.RepositoryItem = this.repositoryItemHyperLinkEdit_ReadOnly; //這個是一個單元格控件設置成只讀 控件為hyperLintEdit才可以設置成不可聚焦TextEidtStyle=HideTextEditor
10 }
11 }
12 }
13
14 private void gridView_RowCellStyle(object sender, RowCellStyleEventArgs e)
15 {
16 if (e.Column != this.gc)
17 {
18 DataRow dataRow = this.gridView.GetDataRow(e.RowHandle);
19 if ((dataRow != null) && (dataRow[e.Column.FieldName] is DBNull))
20 {
21 e.Appearance.BackColor = this.gc.AppearanceCell.BackColor; //設置單元格顏色為灰色 當然也可以不設置
22 }
23 }
24 }
25
26
27 private void InitializeComponent()
28 {
29 this.repositoryItemTextEdit = new RepositoryItemTextEdit();
30 this.repositoryItemTextEdit.BeginInit();
31 this.repositoryItemTextEdit.Appearance.BackColor = Color.FromArgb(0xdf, 0xdf, 0xdf);
32 this.repositoryItemTextEdit.Appearance.Options.UseBackColor = true;
33 this.repositoryItemTextEdit.AppearanceDisabled.BackColor = Color.FromArgb(0xdf, 0xdf, 0xdf);
34 this.repositoryItemTextEdit.AppearanceDisabled.Options.UseBackColor = true;
35 this.repositoryItemTextEdit.AppearanceFocused.BackColor = Color.FromArgb(0xdf, 0xdf, 0xdf);
36 this.repositoryItemTextEdit.AppearanceFocused.Options.UseBackColor = true;
37 this.repositoryItemTextEdit.AutoHeight = false;
38 this.repositoryItemTextEdit.Enabled = false;
39 this.repositoryItemTextEdit.Name = "repositoryItemTextEdit4";
40 this.repositoryItemTextEdit.ReadOnly = true;
41 this.repositoryItemTextEdit.AllowNullInput=false; //不允許空值
42 this.repositoryItemTextEdit.EndInit();
43 }

--Devexpress GridControl 多行復制

View Code
 1 Devexprss GridControl 多行復制:
2 1.GridControl設計器Views下
3 OptionsBehavior-CopyToClipboardWithColumnHeaders=False;
4 OptionsSelection-MultiSelect=True;
5 OptionsSelection-MultiSelectMode=RowSelect;
6 2.添加如下代碼
7 private void Table3Three_gridView_ShowingEditor(object sender, CancelEventArgs e)
8 {
9 e.Cancel = isCancel;
10 }
11 bool isCancel = true;
12 private void Table3Three_gridView_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
13 {
14 isCancel = false;
15 }
16 private void Table3Three_gridView_KeyDown(object sender, KeyEventArgs e)
17 {
18 //Ctrl+V粘貼
19 if (e.Modifiers.CompareTo(Keys.Control) == 0 && e.KeyCode == Keys.V)
20 {
21 object _objData = null;
22 IDataObject dataObj = Clipboard.GetDataObject();
23
24 if (dataObj.GetDataPresent(DataFormats.Text))
25 _objData = dataObj.GetData(DataFormats.Text);
26
27 if (_objData != null)
28 {
29 int RowNumber = 0;
30
31 string _tempStr = _objData.ToString();
32
33 string[] _split = { "\r\n" };
34 string[] _arrayStr = _tempStr.Split(_split, StringSplitOptions.None);
35
36 for (int i = 0; i < _arrayStr.Length - 1; i++)
37 {
38 string[] _arrayStr2 = _arrayStr[i].Split('\t');
39
40 Table3Three_gridView.AddNewRow();
41 Table3Three_gridView.MoveLastVisible();
42 RowNumber = Table3Three_gridView.FocusedRowHandle;
43
44 Table3Three_gridView.SetRowCellValue(RowNumber, Table3Three_gridView.Columns["定額編號"], _arrayStr2[0]);
45 Table3Three_gridView.SetRowCellValue(RowNumber, Table3Three_gridView.Columns["定額名稱"], _arrayStr2[1]);
46 Table3Three_gridView.SetRowCellValue(RowNumber, Table3Three_gridView.Columns["單位"], _arrayStr2[2]);
47 Table3Three_gridView.SetRowCellValue(RowNumber, Table3Three_gridView.Columns["名稱"], _arrayStr2[3]);
48 Table3Three_gridView.SetRowCellValue(RowNumber, Table3Three_gridView.Columns["單位台班"], _arrayStr2[4]);
49 Table3Three_gridView.SetRowCellValue(RowNumber, Table3Three_gridView.Columns["計算數量"], _arrayStr2[5]);
50 Table3Three_gridView.SetRowCellValue(RowNumber, Table3Three_gridView.Columns["台班單價"], _arrayStr2[6]);
51 Table3Three_gridView.SetRowCellValue(RowNumber, Table3Three_gridView.Columns["備注"], _arrayStr2[7]);
52 Table3Three_gridView.SetRowCellValue(RowNumber, Table3Three_gridView.Columns["儀器儀表編碼"], _arrayStr2[8]);
53 Table3Three_gridView.SetRowCellValue(RowNumber, Table3Three_gridView.Columns["總數量"], _arrayStr2[9]);
54 Table3Three_gridView.SetRowCellValue(RowNumber, Table3Three_gridView.Columns["台班合價"], _arrayStr2[10]);
55 Table3Three_gridView.SetRowCellValue(RowNumber, Table3Three_gridView.Columns["關聯"], _arrayStr2[11]);
56 }
57 isCancel = true;
58 App_Code.Global.isChange = "5";
59 }
60 }
61 }

--Devexpress GridControl AdvBandedGridView 數據多行顯示

View Code
 1 實現效果:
2 |基本信息| 費率 |
3 | 名稱 | 運雜費 |采購費 |
4 | |優惠系數|優惠系數|
5 | 第1段 | 2.2% | 1.0% |
6 | | 80% |90% |
7
8 操作:
9 1.GridView設計器“ClickHereToChangeView-ConvertTo-advBandedGridView”
10 2.GridControl設計器中Bands新增“基本信息”和“費率”兩個Band
11 3.GridControl設計器中Bands中ShowColumnsSelector並拖動“運雜費”“采購費”“優惠系數”“優惠系數”到各自的Bands
12 3.GridControl設計器中Bands拖動2個優惠系數分別到第二行
13 4.GridControl設計器中Columns修改“名稱”列rowcount屬性為2
14 5.GridControl設計器中Bands和Columns所有列的MinWidth=100
15 6.GridControl設計器中Bands和Columns所有列的AllowMove=false
16 7.GridControl設計器中Bands中AutoWidth的勾去掉

--Devexpress GridControl RepositoryItemComboBox 只讀

View Code
1 GridControl 的RepositoryItemComboBox 控件,如果需要設置“只讀+下拉”方法如下:
2 GridControl設計器-Columns-某字段-Column properties-ColumnEdit-TextEditStyle=DisableTextEditor

--Devexpress GridControl 統計技巧

View Code
1 比如對“數量”列進行統計,只要在GridControl的設計器中設置SummaryItem:
2 SummaryItem.DisplayFormat = "{0:f2}";
3 SummaryItem.FieldName = "數量";
4 SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum;

--Devexpress GridControl 公式使用技巧

View Code
 1 1.GridControl設計器 //由於數據庫的列“合價”不能既有值又綁定公式,所以我們引入一個虛擬的列“小計”
2 SQL語句“select 單價,數量,合價 from 表名”
3 數據庫真實列“單價”“數量”“合價”,非真實列“小計”
4 其中“小計”UnboundExpression=[單價] * [數量]
5 其中“小計”Visible=False //隱藏該虛擬列
6 2.后台代碼 //把“小計”計算的值寫入“合價”單元格
7 private void gridView_CellValueChanged(object sender, CellValueChangedEventArgs e)
8 {
9 if (gridView.FocusedRowHandle >= 0)
10 {
11 if (e.Column.Caption.Equals("數量") || e.Column.Caption.Equals("單價"))
12 {
13 //設置結果值
14 gridView.SetRowCellValue(gridView.FocusedRowHandle, gridView.Columns["合價"], gridView.GetFocusedRowCellValue("小計").ToString());
15 }
16 }
17 }

--Devexpress GridControl 屏蔽右鍵

View Code
1 optionmenu-》enablegrouppanelmenu類似參數為false

--Devexpress GridControl 全選


1.如圖添加DevExpress.XtraEditors.CheckEdit,設置Size(18, 19)
2.設置GridControl首列“check”屬性MinWidth,MaxWidth為20
3.添加代碼

View Code
1         private void checkBox_All_CheckStateChanged(object sender, EventArgs e)
2         {
3             foreach (DataRow dr in dt_EvaluateProjectT.Rows)            
4                 dr["check"]=(sender as DevExpress.XtraEditors.CheckEdit).CheckState;
5         }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM