C#中第三方插件DevExpress中的TreeList求解

xlgdst 2012-12-18 10:26:31
我在页面A上一个ButtonEdit控件,存放数据所属功能;页面B上一个TreeList控件,下拉多有功能的树形结构;单击ButtonEdit弹出TreeList,当我选择好对应的节点后,我和把该节点的Id跟Name传到A页面中?
如图
A窗口上的单击事件:
private void funcButtonEdit_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
{
FuncTreeDialogForm f = (FuncTreeDialogForm)App.Resolve<IFuncTreeDialogForm>();
try
{
f.ShowDialog();
}
finally
{
f.Dispose();
}
}
B窗口选择节点:
private void FuncTreeDialogForm_Load(object sender, EventArgs e)
{
this.Presenter.View = this;
IList<Model.Func> list = this.Presenter.GetFuncList();
this.treeList1.DataSource = this.Presenter.ToDataTable(list);
treeList1.OptionsBehavior.PopulateServiceColumns = false;

treeList1.KeyFieldName = "Func_Id";
treeList1.Columns["Func_Name"].Caption = "功能名称";
treeList1.ParentFieldName = "Parent_Func_Id";
this.treeList1.ExpandAll();
}

private void treeList1_DoubleClick(object sender, EventArgs e)
{
var item = this.treeList1.FocusedNode;
var ii = item.GetValue("Func_Full_Name");
MessageBox.Show(ii.ToString());
}
我现在是选择一个节点后,能弹出相应的节点全名,我想把Id和名字传给A窗口的ButtonEdit空间显示,改如何传旨??
...全文
330 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dwjjtc 2015-02-06
  • 打赏
  • 举报
回复
请问你的按钮下拉是怎么实现的 我做的效果总是十字连线的 不好看!
xlgdst 2012-12-24
  • 打赏
  • 举报
回复
引用 4 楼 hky44 的回复:
在B窗体里面定义一个全局变量存储选择的节点trFocusedNode 在A中 显示B 时候 判断是否按有选择 DialogResult rs = f.ShowDialog(this); if (rs == DialogResult.OK) { string stringName =f.trFocusedNode.GetValue("Func_Fu……
这个我也解决了,this.funcButtonEdit.DataBindings.Add(new Binding("EditValue", this.Bug, "Func_Id"));这样绑定确实有点问题,我直接写结果,在后面的事件中会为Bug.Func_Id重新赋值,保存时直接取就是最新值了 例外最后一点,treeList里面展开到指定节点是哪个?怎么只有一个ExpandAll()方法,是展开所有节点啊
xlgdst 2012-12-21
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
http://bbs.csdn.net/topics/360140208
我父级窗口打开明细页面,操作后刷新父级窗口是用的委托,现在直接用的Dialog,所以前一窗口没有被销毁,可以直接拿来用 FuncTreeDialogForm f = (FuncTreeDialogForm)App.Resolve<IFuncTreeDialogForm>(); DialogResult dr = f.ShowDialog(); if (dr != DialogResult.Cancel) { this.funcButtonEdit.Text = f.SelectedFunc.Func_Full_Name; this.funcButtonEdit.EditValue = f.SelectedFunc.Func_Full_Name; this.Bug.Func_Id = f.SelectedFunc.Func_Id; } f.Close(); 这样的话,我选择一个功能后,ButtonEdit显示对应的名字,加载的时候也是对应的名字,可是如果我点击其他空白处,ButtonEdit就会变成对应的Id了,改问题如何解决?? 我绑定数据代码: this.funcButtonEdit.DataBindings.Add(new Binding("EditValue", this.Bug, "Func_Id")); this.funcButtonEdit.Text = this.Presenter.FuncService.LoadFunc(this.Bug.Func_Id).Func_Full_Name; this.funcButtonEdit.EditValue = this.funcButtonEdit.Text; 还有一点EditValue和Text有必要都设置吗??
hky44 2012-12-21
  • 打赏
  • 举报
回复
在B窗体里面定义一个全局变量存储选择的节点trFocusedNode 在A中 显示B 时候 判断是否按有选择 DialogResult rs = f.ShowDialog(this); if (rs == DialogResult.OK) { string stringName =f.trFocusedNode.GetValue("Func_Full_Name"); }
liuzhitian 2012-12-19
  • 打赏
  • 举报
回复
楼上方法很好。。。值得借鉴。。。 如果不考虑耦合,子窗体直接操纵主窗体更简单。。。
threenewbee 2012-12-18
  • 打赏
  • 举报
回复

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧