TreeList和GridControl笔记

来源:互联网 发布:linux返回上一级目录 编辑:程序博客网 时间:2024/05/19 23:54

这几天学学Dev的TreeList和GridControl的使用,写下自己觉得还有用的部分.

1.  首先是Dev TreeList的使用:

既然说到是TreeList,那它的结构就是树的结构:一个父节点,多个子节.如果要生成如下图的一个TreeList


我们必须要知道子节点的主键和它父节点的主键,

如果说大星系的编码为1050,小一点的星系(就像我们的太阳系)的编码是11101-20,行星的编码是BFxxx,那么,上图在DataTable中的形式如下:

ID(子节点主键)

PID(父节点主键)

1050(银河系)

NULL

11101-20(太阳系)

1050

11101-20

BF1(水星)

11101-20

BF2(木星)

11101-20

BF3(土星)

11101-20

BF4(金星)

11101-20

BF5(地球)

所以,如果DataTable的形式如此,则只需对TreeList的属性进行如下设置即可:


而在界面上显示的文字,那可以在DataTable另加一列(点击TreeList控件,按下F4,在属性菜单上打开”Run Designer”,新增一列(在此我将这列命名为” DES”,描述为”我们的宇宙”)

ID(子节点主键)

PID(父节点主键)

DES(我们的宇宙)

1050

NULL

银河系

11101-20

1050

太阳系

11101-20

BF1

水星

11101-20

BF2

木星

11101-20

BF3

土星

11101-20

BF4

金星

11101-20

BF5

地球

这样,文字就会显示在界面上了.

显示不是最终的结果,用户还会对它进行操作,这就涉及到了你如何判断用户选择了哪个节点呢?  

private void TreeList1_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e){

        object obj = TreeList1.FocusedNode.GetValue(columnIndex);

}

这个事件当你选中节点发生变化时触发,而TreeList1.FocusedNode.GetValue(columnIndex)方法是获取你所选中节点的第columnIndex位置值.因而,这一个FocusedNodeChanged的事件和这个.FocusedNode.GetValue(columnIndex)方法对付一般的需求也就足够了.当然,TreeList提供了很多方法,比如判读是否是叶子节点的方法:HasChild等.

说到子节点的主键,我倒还想起DataTable的排序,虽然挺简单的 :

dtSource.DefaultView.Sort = “"filedName1,filedName2,F_filedName3”;

DataTable dtBP = dtSource.DefaultView.ToTable();

 

下一个来谈谈Dev gridControl(我将gridControl简写为gc,GridView简写为gv吧):

首先,当然是将数据源绑定到gc上( gc.DataSource = datatable;),当我点击某一行时,我要获取该行,那么(DataRow dr = gvUser.GetFocusedDataRow();//返回结果的操作和对datarow相同) ;而要弄出下面这样的效果


那很简单,打开视图设计器


点击”Run Designer”,进入后点击View,然后找到


 

奇行的设置和EvenRow的设置相似.又例如要设置行号,则这样


点击


按下F4,在属性框中选择事件一栏,选择(CustomDrawRowIndicator双击)


在生成的方法中添加代码,如:

  private void gv_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)

        {

            if (e.Info.IsRowIndicator && e.RowHandle >= 0)

            {

                e.Info.DisplayText = (e.RowHandle + 1).ToString();

            }

        }

即可,别忘记了,要是这里不设置,行号是出不来的


.

有的时候,在GridView界面上,我们不需要用户输入,而希望用户选择,那么,我们可以这样设置:打开”视图设计器”->点击”Run Designer”->点击”Columns”->点击要让用户选择的列,再:


点击ColumnEdit右侧的下拉框


选择”repositoryItemGridLookUpEdit”控件.repositoryItemGridLookUpEdit控件和GridLookUpEdit的操作一样,例如数据绑定:

this.repositoryItemGridLookUpEdit1.ValueMember = "fieldName1";

this.repositoryItemGridLookUpEdit1.DisplayMember = "fieldName2";

this.repositoryItemGridLookUpEdit1.DataSource = datatable;

这些你可能要问”要是我要显示的数据不为空,那它要怎么显示在界面上?”呵呵,这个么不用着急,不是有这个嘛: .ValueMember,只要它的值和绑定gc的表此列字段名相同即可,显示你就不用担心了.

另外,有些时候,我既可以在GridView的cell中输入文本,又希望我点击时可以触发一个事件(例如调用另一个界面,从那里获取数据填入到这个cell中), 那处理的方式和” repositoryItemGridLookUpEdit”有些类似,不过这些选的是”ButtonEdit”了.它是如何显示用户不必知道,使用方法和没有选它时一样,只不过它多了个按钮,而这个按钮的使用方法和一般的按钮又是一样的了.

 

0 0