2014-07-18 59 views
2

我想在TreeListLookupEdit中选择一个节点。TreeListLookupEdit - 焦点节点

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

我TreeListLookupEdit已经充满了数据(从EF数据源),我需要关注该行并在这两个treeListLookUpEdit1.Text看到这个值(当它处于关闭状态),当我也打开一个弹出窗口。

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

我也试过这个(其中 “树节点” 是TreeListLookupEdit内的实际的TreeList):

treeNodes.FocusedNode = fn; 

但是,当我运行这段代码,它的工作原理:

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

那么,如何避免使用ShowPopup?

更新 看来,你应该设置的EditValue

treeListLookupEdit1.EditValue = NodeId 
+0

是否有任何属性EditingValue? – Shell

+0

是的,TreeListLookupEdit有一个EditValue,但它什么都不做。 – Dimitri

+0

然后我不认为有没有其他方法可以在不弹出查找的情况下集中树节点。 – Shell

回答

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(); 

如果设置此treeListLookUpEdit对象例如EditValue属性为5,那么你将请参阅控制中的“1.2”文本以及使用此类文本的节点将重点关注:

treeListLookUpEdit.EditValue = 5; 
+0

OP不想弹出查找编辑..这个事件会在没有弹出查找编辑的情况下触发吗? – Shell

+0

它将选择TreeList中的节点,但不会将该值设置为实际的treeListLookUpEdit1。我将无法在关闭的TreeListLookupEdit上看到所选值 – Dimitri

+0

@Dimitri是否需要将值设置为实际的treeListLookUpEdit1? – nempoBu4