DevExpress控件的GridControl控件小结
(由于开始使用DevExpress控件了,所以要点滴的记录一下)
1.DevExpress控件组中的GridControl控件不能使横向滚动条有效。现象:控件中的好多列都挤在一起,列宽都变的很小,根本无法正常浏览控件单元格中的内容。
解决:
gridView1.OptionsView.ColumnAutoWidth属性是true,即各列的宽度自动调整,你把它设成false,就会出现了。
2.使单元格不可编辑。
gridcontrol -->gridview -->OptionsBehavior -->Editable=false
3.没有下拉滚动条事件怎么办?现象:因为需要加载大数据量数据,所以不能一次把所有数据读入datatable进行绑定,所以决定在用户进一步浏览数据时进行数据的实时加载工作,就是每当用户拉动滚动条时,多加载一些数据进入datatable.没有找到合适的滚动条事件,于是用这个事件代替了,非常合适我的需求.
TopRowChanged事件.
4.获取选定行,指定列单元格的内容
private string GetSelectOID()
{
int[] pRows = this.gridView1.GetSelectedRows();
if (pRows.GetLength(0) > 0)
return gridView1.GetRowCellValue(pRows[0], mOIDFiledName).ToString ();
else
return 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] = pFeatureLayer.Name;
rowArray[1] = false;
pDataRow.ItemArray = rowArray;
pDatatable.Rows.Add(pDataRow);
}
this.gridMark.DataSource = pDatatable;
this.gridMark.Refresh();
}
注意:创建的datatable的列名一定要和gridview中的列的fieldname属性值是一个名字,不然,你会发现添加了和你绑定的datatalbe一样多的行,可是行里面却没有内容的.
7.多选
GridControl->GridView->属性->OptinosSelecttion->MultiSelect
8.不显示子表信息
当我们对DataTable建立父子关系后,将父表绑定在Grid上,会造成关系列上有加号显示,并且可以展开.如果你觉得展开的信息对你没有意义的话,是可以关掉的.这是需要修改属性
属性Gridview->Option View->ShowDetailButtons=false