怎样给DevExpress XtraTreeList添加行的序号

怎样给DevExpress XtraTreeList添加行的序号,第1张

treeListAppendNode(参数1,参数2)//添加节点的方法 例如: TreeListNode ParentNode=treeListAppendNode(null,null);//添加第一节点 ParentNodeSetValue(treeListColumns[0], "显示的值");//添加第一节点显示的值

你要的功能不是多行显示而是多列显示吧,cxDBTreeList主要有以下三个关键属性

KeyFields: 子节点ID

DisplayFields:节点内容这里就是显示内容,记得可以在界面上直接新增的,应该是双击cxDBTreeList吧

ParentFields:父节点ID

首先启用TreeList的ShowingEditor事件,该事件在控件转化到可编辑状态前调用,只要设置该事件的参数CancelEventArgs即可

而对于具体是哪一个节点则可以通过TreeList的FocusedNode来获取,而对于是哪一列则可以通过TreeList的FocusedColumn来获取

而我现在的这个项目还要求结合第一列的值来进行判断,那么就通过FocusedNode的GetValue(0)方法来获取第一列的值。

写了这么多还是来看一下代码可能更明白:

private void treeList1_ShowingEditor(object sender, CancelEventArgs e)

{

TreeList currentTreeList = sender as TreeList;

if (currentTreeList != null)

{

TreeListNode node = currentTreeListFocusedNode;

DevExpressXtraTreeListColumnsTreeListColumn column = currentTreeListFocusedColumn;

if (columnFieldName == "ITEM_VALUE" && nodeGetValue(0)ToString() != "")

{

eCancel = true;

}

else

{

eCancel = false;

}

}

}

treelist设置展开卡顿:Devexpress中的TreeList是经常用到的数据浏览管理控件,它的数据加载方式通常是赋予DataSource数据源,并指定ParentFieldName和KeyFieldName来确定"父子"关系,这种绑定方式 *** 作简单,但加载和 *** 作十分卡顿(100个节点),用户体验非常差。

推荐使用AppendNode逐条加载,此方法有多个重载方法,支持设置节点数据对象(object数据组或DataRow)、父节点ID、父节点、图像索引、选择状态、tag值等。

树形控件是使用频率很高的一种控件。对于属性控件往往需要下面两个功能

1TreeList带有CheckBox,并且节点要有三种状态(所有的子节点都选中,所有的子节点都没选择,一部分子节点选中)。使用DevXpress的TreeList控件很容易实现这一功能。

设置TreeListOptionsViewShowCheckBoxes = true //是否显示CheckBox

设置TreeListOptionsBehaviorAllowIndeterminateCheckState = true; //设置节点是否有中间状态,即一部分子节点选中,一部分子节点没有选中

设置这两个属性之后就实现了TreeList带有CheckBox,并且节点有三种状态。

2选中父节点或者子节点相互影响的功能,如选择父节点选择所有子节点。绑定TreeList的两个事件AfterCheckNode和BeforeCheckNode

实现功能的代码如下:

private void treeList1_AfterCheckNode(object sender, DevExpressXtraTreeListNodeEventArgs e)

{

SetCheckedChildNodes(eNode, eNodeCheckState);

SetCheckedParentNodes(eNode, eNodeCheckState);

}

private void treeList1_BeforeCheckNode(object sender, DevExpressXtraTreeListCheckNodeEventArgs e)

{

eState = (ePrevState == CheckStateChecked CheckStateUnchecked : CheckStateChecked);

}

/// <summary>

/// 设置子节点的状态

/// </summary>

/// <param name="node"></param>

/// <param name="check"></param>

private void SetCheckedChildNodes(TreeListNode node, CheckState check)

{

for (int i = 0; i < nodeNodesCount; i++)

{

nodeNodes[i]CheckState = check;

SetCheckedChildNodes(nodeNodes[i], check);

}

}

/// <summary>

/// 设置父节点的状态

/// </summary>

/// <param name="node"></param>

/// <param name="check"></param>

private void SetCheckedParentNodes(TreeListNode node, CheckState check)

{

if (nodeParentNode != null)

{

bool b = false;

CheckState state;

for (int i = 0; i < nodeParentNodeNodesCount; i++)

{

state = (CheckState)nodeParentNodeNodes[i]CheckState;

if (!checkEquals(state))

{

b = !b;

break;

}

}

nodeParentNodeCheckState = b CheckStateIndeterminate : check;

SetCheckedParentNodes(nodeParentNode, check);

}

}

1TreeListNodeCellStyle事件

Node的显示(包括窗口的切换导致Node的显示)和状态的改变都会触发该事件。该事件主要用来改变Node的显示样式。

private void treeList1_NodeCellStyle(object sender, DevExpressXtraTreeListGetCustomNodeCellStyleEventArgs e)

{

if (eNodeCheckState == CheckStateUnchecked)

{

eAppearanceFont = new Font(DevExpressUtilsAppearanceObjectDefaultFont, FontStyleStrikeout);

eAppearanceForeColor = ColorGray;

}

}

上面的代码是实现的效果是 : CheckState为Unchecked的节点的字带有中划线且背景灰色。

2TreeListDoubleClick事件

双击Node时触发,但要注意的是要在TreeListOptionsBehaviorEditable = false的情况下,双击Node才能触发该事件。

private void treeList1_DoubleClick(object sender, EventArgs e)

{

TreeListNode clickedNode = thistreeList1FocusedNode;

string disPlayText = clickedNodeGetDisplayText("test");

MessageBoxShow("You clicked " + disPlayText);

}

3TreeList的命中测试特性

private void treeList1_MouseMove(object sender, MouseEventArgs e)

{

Point point = treeList1PointToClient(CursorPosition);

TreeListHitInfo hitInfo = treeList1CalcHitInfo(point);

switch (hitInfoHitInfoType)

{

case HitInfoTypeCell:

thisCursor = CursorsHand;

break;

case HitInfoTypeNodeCheckBox:

thisCursor = CursorsPanEast;

break;

default :

thisCursor = CursorsDefault;

break;

}

}

DataTable dtTree = new DataTable();

            dtTreeColumnsAdd("ID",typeof(string));

            dtTreeColumnsAdd("Code", typeof(string));

            dtTreeColumnsAdd("Name", typeof(string));

            dtTreeColumnsAdd("Description", typeof(string));

            dtTreeColumnsAdd("ParentID", typeof(string));

            //新增加的列 布尔类型才能绑定checkbox

            dtTreeColumnsAdd("Tag", typeof(bool));

            dtTreeColumnsAdd("Happy", typeof(string));

DataRow row = dtTreeNewRow();

            row["ID"] = "1";

            row["Code"] = "001";

            row["Name"] = "野原广志";

            row["Description"] = "野原广志";

            row["ParentID"] = "-1";

            row["tag"] = false;

            row["Happy"] = "爱吃青椒";

            dtTreeRowsAdd(row);

DataRow row2 = dtTreeNewRow();

            row2["ID"] = "2";

            row2["Code"] = "002";

            row2["Name"] = "野原美呀";

            row2["Description"] = "野原美呀";

            row2["ParentID"] = "-1";

            row2["tag"] = false;

            row2["Happy"] = "爱吃青椒";

            dtTreeRowsAdd(row2);

DataRow row3 = dtTreeNewRow();

            row3["ID"] = "3";

            row3["Code"] = "003";

            row3["Name"] = "野原新之助";

            row3["Description"] = "野原新之助";

            row3["ParentID"] = "-1";

            row3["tag"] = false;

            row3["Happy"] = "不爱吃青椒";

            dtTreeRowsAdd(row3);

DataRow row4 = dtTreeNewRow();

            row4["ID"] = "4";

            row4["Code"] = "004";

            row4["Name"] = "野原小白";

            row4["Description"] = "野原小白";

            row4["ParentID"] = "3";

            row4["tag"] = false;

            row4["Happy"] = "不爱吃青椒";

            dtTreeRowsAdd(row4);

//模拟数据 将查询出来的datatable添加一列 例如:tag

            //然后查询datatable type列 当type为“板式”,“沙发”时 将tag列置为true

            DataRow[] drs = dtTreeSelect("Happy='爱吃青椒'");

            foreach (DataRow item in drs)

            {

                item["tag"] = true;

            }

            treeList1DataSource = dtTree;

这个设置行高步骤如下:

首先先初始化Arrayadapter,类型是string。

然后然后装入listview,如果发现每个item尺寸太大,在一个屏幕中放不开。

3、在设置布局的高度,还有如果布局是全屏。只要设置布局中的组件layout_height 即可。

以上就是关于怎样给DevExpress XtraTreeList添加行的序号全部的内容,包括:怎样给DevExpress XtraTreeList添加行的序号、怎么使得cxDBTreeList的节点内容可以多行显示、Dev TreeList 如何点击空白取消选中的列等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9625470.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存