我就知道是你 2022-03-07 10:46 采纳率: 66.7%
浏览 63
已结题

Devexpress TreeList控件数据源顺序如何跟随界面改变?

问题遇到的现象和发生背景

在使用Devexpress的TreeList控件时,通过将数据BindingList设置为DataSource实现数据绑定。完成绑定后修改界面值数据源也跟随改变。问题是当修改TreeList中行的顺序时(比如上下移动某行)数据源不跟随变化。

问题相关代码,请勿粘贴截图

代码大致如下(由于用List当作数据源时连新增行这种操作都无法在界面同步因此用的BindingList):

public BindingList<MyClass> datas = new BindingList<MyClass>();
public Form1()
{
     InitializeComponent();
     treeList1.DataSource = datas;
}

private void PrintBtn_Click(object sender, EventArgs e)
{
      foreach(MyClass myClass in datas)
      {
          Console.WriteLine(myClass.Name);
      }
}

public class MyClass
    {
        public string Name { get; set; }
        public string Other { get; set; }
        public string ID { get; set; }
        public string ParentID { get; set; }
    }
运行结果及报错内容

以下是改变顺序前后对数据源打印的结果:

img

img

我的解答思路和尝试过的方法

我尝试在数据移动时通过获取选中行和放置行ID来获取MyClass对象从而直接在datas中去改变数据源的顺序以达到改变顺序的效果(即改变BindingList中元素顺序)。但是用这种方法会产生一个问题,当存在子项时采用第三变量去改变BindingList顺序时会报错(个人分析原因应该是由于绑定TreeList后当出现重复ID字段时子项ParentID不知道出现重复指向造成的)。

我想要达到的结果

想请教一下有没有直接连数据源顺序也能跟随界面去改变的绑定方式呢??

  • 写回答

2条回答 默认 最新

  • prince_zxill 2022-03-14 13:37
    关注
    
    public class DataTreeNode
        {
            private string id;
            private string parentId;
            private string nodeText;
           
    
            public string Id
            {
                get { return id; }
                set { id = value; }
            }
    
            public string ParentId
            {
                get { return parentId; }
                set { parentId = value; }
            }
    
            public string NodeText
            {
                get { return nodeText; }
                set { nodeText = value; }
            }
    
            
        }
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月14日
  • 创建了问题 3月7日

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大