TreeListLookupEdit - 焦点节点

时间:2014-07-18 11:39:35

标签: winforms devexpress xtratreelist

我正在尝试在TreeListLookupEdit中选择一个节点。

var fn = treeListLookupEdit1.FindNodeByKeyID(NodeId);
treeListLookupEdit1.Properties.TreeList.FocusedNode = fn;

我的TreeListLookupEdit已经填充了数据(来自EF数据源),我需要聚焦所需的行并在treeListLookUpEdit1.Text(当它处于关闭状态时)和我打开弹出窗口时看到这个值太

但没有任何反应,它不会选择节点。

我也试过这个(其中“treeNodes”是TreeListLookupEdit中的实际TreeList):

treeNodes.FocusedNode = fn;

但是,当我运行这段代码时,它可以工作:

treeListLookupEdit1.ShowPopup();
treeListLookupEdit1.Properties.TreeList.FocusedNode = fn;
treeListLookupEdit1.ClosePopup();

那么,如何避免使用ShowPopup?

更新 看来,你应该设置EditValue

treeListLookupEdit1.EditValue = NodeId

1 个答案:

答案 0 :(得分:1)

您需要设置TreeListLookUpEdit.Properties.DisplayMember属性和TreeListLookUpEdit.Properties.ValueMember属性 将TreeListLookUpEdit.Properties.DisplayMember属性设置为要在TreeListLookupEditTreeListLookUpEdit.Properties.ValueMember到ID列中显示的列,并使用TreeListLookUpEdit.EditValue来关注节点。
之后你可以这样做:

treeListLookupEdit1.EditValue = fn.GetValue("YourIDColumn");

以下是DataTable作为数据源的示例:

var dataTable = new DataTable();

dataTable.Columns.Add("ID", typeof(int));
dataTable.Columns.Add("Parent_ID", typeof(int));
dataTable.Columns.Add("Name", typeof(string));

dataTable.Rows.Add(1, null, "1");
dataTable.Rows.Add(2, null, "2");
dataTable.Rows.Add(3, null, "3");
dataTable.Rows.Add(4, 1, "1.1");
dataTable.Rows.Add(5, 1, "1.2");
dataTable.Rows.Add(6, 3, "3.1");
dataTable.Rows.Add(7, 3, "3.2");
dataTable.Rows.Add(8, 5, "1.2.1");

var treeListLookUpEdit = new TreeListLookUpEdit();
var properties = treeListLookUpEdit.Properties;

properties.DataSource = dataTable;
properties.DisplayMember = "Name";
properties.ValueMember = "ID";

var treeList = properties.TreeList;

treeList.KeyFieldName = "ID";
treeList.ParentFieldName = "Parent_ID";
treeList.RootValue = DBNull.Value;

Controls.Add(treeListLookUpEdit);

treeListLookUpEdit.Size = treeListLookUpEdit.CalcBestSize();

如果您将此EditValue对象的treeListLookUpEdit属性设置为5,那么您将看到" 1.2"控件中的文本和具有此类文本的节点将重点关注:

treeListLookUpEdit.EditValue = 5;