【问题标题】:TreeListLookupEdit - Focus NodeTreeListLookupEdit - 焦点节点
【发布时间】:2014-09-09 12:59:58
【问题描述】:

我正在尝试在 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

【问题讨论】:

  • 有像EditingValue这样的属性吗?
  • 是的,TreeListLookupEdit 有一个 EditValue,但它什么也没做。
  • 那么我认为没有其他方法可以在不弹出查找的情况下聚焦树节点。

标签: winforms devexpress xtratreelist


【解决方案1】:

您需要设置TreeListLookUpEdit.Properties.DisplayMember属性和TreeListLookUpEdit.Properties.ValueMember属性。
TreeListLookUpEdit.Properties.DisplayMember 属性设置为要在TreeListLookupEdit 中显示的列,将TreeListLookUpEdit.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();

如果您将此treeListLookUpEdit 对象的EditValue 属性设置为5,那么您将在控件中看到“1.2”文本,并且带有此类文本的节点将被聚焦:​​

treeListLookUpEdit.EditValue = 5;

【讨论】:

  • OP 不想弹出查找编辑。这个事件会在不弹出查找编辑的情况下触发吗?
  • 它将选择TreeList中的节点,但不会将值设置为实际的treeListLookUpEdit1。我将无法在关闭的 TreeListLookupEdit 上看到选定的值
  • @Dimitri 是否需要将值设置为实际的 treeListLookUpEdit1?
  • @nempoBu4,我的 treeListLookUpEdit1 已经填充了数据,我需要关注所需的行并在 treeListLookUpEdit1.Text (当它处于关闭状态时)和打开一个弹出窗口。
猜你喜欢
  • 2014-03-14
  • 1970-01-01
  • 1970-01-01
  • 2021-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
相关资源
最近更新 更多