目录1. DevExpress控件组中的GridControl控件不能使横向滚动条有效。
(2)2. 使单元格不可编辑。
(2)3. 没有下拉滚动条事件怎么办? (2)4. 获取选定行,指定列单元格的内容 (2)5. 去除"Drag a Column Header Here To Group by that Column" (3)6. 在gridcontrol中添加checkbox复选框 (3)7. 单元格合并问题 (4)8. gridView 奇行与偶行交替变色 (4)9. girdView在第一列显示行号 (4)10. 选中某列进行排序时,如何让该列高亮显示 (5)11. XtraGrid冻结列 (5)(由于开始使用DevExpress控件了,所以要点滴的记录一下)1.DevExpress控件组中的GridControl控件不能使横向滚动条有效。
现象:控件中的好多列都挤在一起,列宽都变的很小,根本无法正常浏览控件单元格中的内容。
解决:gridView1.OptionsView.ColumnAutoWidth属性是true,即各列的宽度自动调整,你把它设成false,就会出现了。
2.使单元格不可编辑。
gridcontrol -->gridview -->OptionsBehavior -->Editable=false3.没有下拉滚动条事件怎么办?现象:因为需要加载大数据量数据,所以不能一次把所有数据读入datatable进行绑定,所以决定在用户进一步浏览数据时进行数据的实时加载工作,就是每当用户拉动滚动条时,多加载一些数据进入datatable.没有找到合适的滚动条事件,于是用这个事件代替了,非常合适我的需求.TopRowChanged事件.4.获取选定行,指定列单元格的内容private string GetSelectOID(){int[] pRows = this.gridView1.GetSelectedRows();if (pRows.GetLength(0) > 0)return gridView1.GetRowCellValue(pRows[0], mOIDFiledName).ToString ();elsereturn null;}//mOIDFiledName为要获取列的列名5.去除"Drag a Column Header Here To Group by that Column"属性Gridview->Option View->Show Group Panel=false,就好了6.在gridcontrol中添加checkbox复选框gridview->run designer->columns->选择要变成复选框的那一列->column edit->new(在这里可以选择很多类型)加载checkbox数据时,费了一点时间,checkbox的复选框怎么点击,一失去焦点是,选择的操作就无效了,问题就出在datatable的绑定上了,一定要绑定一个布尔的类型.代码是这样滴!private void FrmCreateLegend_Load(object sender, EventArgs e){IFeatureLayer pFeatureLayer;IDataset pDataset;string pName;DataTable pDatatable = new DataTable();pDatatable.Columns.Add("图层名称", System.Type.GetType("System.String"));pDatatable.Columns.Add("选择", System.Type.GetType("System.Boolean"));DataRow pDataRow;object[] rowArray = new object[2];for (int i = 0; i < mFeatureLayers.Count; i++){pDataRow = pDatatable.NewRow();pFeatureLayer = mFeatureLayers[i] as IFeatureLayer;rowArray[0] = ;rowArray[1] = false;pDataRow.ItemArray = rowArray;pDatatable.Rows.Add(pDataRow);}this.gridMark.DataSource = pDatatable;this.gridMark.Refresh();}注意:创建的datatable的列名一定要和gridview中的列的fieldname属性值是一个名字,不然,你会发现添加了和你绑定的datatalbe一样多的行,可是行里面却没有内容的.第三方控件GridControl 使用技巧自开始接触此第三方控件至今三个月,经常使用,三个月中碰到一些问题,一一解决,如是现在整理使用的内容:7.单元格合并问题(1)窗体加载时ceMerging.Checked = gridView1.OptionsView.AllowCellMerge;(2)添加事件private void ceMerging_CheckedChanged(object sender, EventArgs e){gridView1.OptionsView.AllowCellMerge = ceMerging.Checked;}8.gridView 奇行与偶行交替变色this.gridView1.OptionsView.EnableAppearanceEvenRow = true;this.gridView1.OptionsView.EnableAppearanceOddRow = true;this.gridView1.Appearance.EvenRow.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));eBackColor = true;this.gridView1.Appearance.OddRow.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));eBackColor = true;9.girdView在第一列显示行号//调整第一列的宽度this.gridView1.IndicatorWidth = 40;//添加监听事件this.gridView1.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(this.gridView1_Custom DrawRowIndicator);//事件private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e){if (.IsRowIndicator && e.RowHandle >= 0){.DisplayText =Convert.ToString(Convert.ToInt32(e.RowHandle.ToString())+1);}}10.选中某列进行排序时,如何让该列高亮显示在gridView1的"EndSorting"事件中加入以下代码private void gridView1_EndSorting(object sender, EventArgs e){Color clr = gridView1.Appearance.Row.BackColor;foreach (DevExpress.XtraGrid.Columns.GridColumn dc in gridView1.Columns){if (dc.VisibleIndex == gridView1.SortedColumns[0].VisibleIndex){dc.AppearanceCell.BackColor = Color.Red;}else{dc.AppearanceCell.BackColor = clr;}}}11.XtraGrid冻结列XtraGrid的GridView中的Columns里面有Fixed属性Devpress.XtraGrid.GridControl1,增加新行用InitNewRow事件,给新行某字段赋值。
后结束编辑。
private void grdView_InitNewRow(object sender,DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e){DevExpress.XtraGrid.Views.Grid.GridView view = sender asDevExpress.XtraGrid.Views.Grid.GridView;view.SetRowCellValue(e.RowHandle, view.Columns["EnterID"],this.dS_MEnterStoreView.MEnterStore[0].ID);this.grdControl.EmbeddedNavigator.Buttons.EndEdit.DoClick();this.grdView.UpdateCurrentRow();}2,如果进行行验证,就在换行时时行,用grdView_FocusedRowChanged事件private void grdView_FocusedRowChanged(object sender,DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e){WsClient.WS_MEnterStore.DS_MEnterStoreView.MEnterDetailRow row =(WsClient.WS_MEnterStore.DS_MEnterStoreView.MEnterDetailRow)this.grdView.GetDataRow(e.Focus edRowHandle);if (row != null){if ((this.OperState == Common.Enum.TOperState.UnConfirmNew)|| (this.OperState == Common.Enum.TOperState.UnConfirmEdit)){this.InitComboBoxValue(row, row.IsGoodIDNull()?0:row.GoodID, false);this.InitBatchComboBoxValue(row, row.IsGoodIDNull()?0:row.GoodID, false);}}}3,如果需要改变行的某一列的同时改变其它的列用grdView_CellValueChanged事件private void grdView_CellValueChanged(object sender,DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e){if (this.grdView.FocusedColumn == e.Column){if (e.Column == this.colAmount){}}}4,如果需在离开行的时候需要验证,则用grdView_BeforeLeaveRow事件.Dev里面DataGid控件使用方法之一(转)1、确认当前正在编辑的单元格的输入this.gridview1.CloseEditor();2、保存当前行的值到数据源this.gridview1.UpdateCurrentRow();3、通过数据适配器把修改更新到数据库sqlDataAdapter1.Update(myDataSet, "MyTable")//此时直接通过DataAdapter执行Update就可以按照1,2,3的步骤执行;也可以通过1,2步骤然后通过Sql实现(2)DataGrid的初始化gridView1.OptionsView.EnableAppearanceEvenRow = true;gridView1.OptionsView.EnableAppearanceOddRow = true;gridView1.OptionsView.ShowFilterPanel = false;gridView1.OptionsView.ShowGroupPanel = false;gridView1.OptionsView.ShowGroupPanel=false;gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;gridView1.OptionsBehavior.Editable = false;gridView1.OptionsCustomization.AllowColumnMoving = false;gridView1.OptionsCustomization.AllowColumnResizing = false;gridView1.OptionsCustomization.AllowGroup = false;gridView1.OptionsCustomization.AllowFilter = false;gridView1.OptionsCustomization.AllowSort = true;(3)获取选中的行和选中行的字段的内容int[] a = this.gridView1.GetSelectedRows(); //传递实体类过去获取选中的行LAA.AssetGuid = this.gridView1.GetRowCellValue(a[0], "AssetGuid").ToString();//获取选中行的内容(4)以前在windows 自带的控件里面Button控件的相互调用是button1_Click(null,EventArgs.Empty);Dev控件下面是simpleButton1_Click(new object(),new EventArgs());(5)在XtraGrid中如何验证单元格的值我们在XtraGrid直接输入数据的情况下,如何验证每一个单元格输入的值是否正确呢?有两种方法来实现基于单元格的验证:1、使用RepositoryItem.Validating事件事件的"sender" 必须转换为BaseEdit类型,使用EditValue来获取当前输入的值并进行校验,如果校验不通过,把e.Cancel设置True。