Dev GridLevelTree 主从表 自动加载

WinForm devexpress做主从表

dev GridLevelTree 官方文档

dev GridLevelNode 官方文档

感兴趣可以先看看 反正我觉得讲的不是人话…

网上其实很多例子 讲的比较好的 比如这个 代码清晰 逻辑不算复杂 DEV—【GridControl主从表】

但是目前有个需求 我的从表里面还有一个List 但是我不想要那个List显示出来 正常写法的话 他会自动帮我加载
网上也没找到 然后看基类发现一个属性 说人话就是你是不是只想显示自己设置的关系 不是的话 他自动给你加上去 默认false

//
// 摘要:
//     Gets or sets whether the Grid Control displays only the relationships that exist
//     in the DevExpress.XtraGrid.GridControl.LevelTree.
[Browsable(true)]
[DefaultValue(false)]
[DevExpressXtraGridLocalizedDescriptionAttribute("GridControlShowOnlyPredefinedDetails")]
[DXCategory("Behavior")]
public virtual bool ShowOnlyPredefinedDetails {
      get; set; }

所以完成需求 改这个属性就完事儿了


最后贴一段比较完整的代码
注意当前的代码是在GridControl的一个封装里面写的
this指向GridControl本身

//只显示已设置的关系 默认false
this.ShowOnlyPredefinedDetails = true;

//创建一个从表的GridView对象
var childView = new GridView();
childView.ViewCaption = "好看名字";//显示表格标题用的
childView.Name = "childView";
childView.GridControl = this;
//巴拉巴拉的一些设置 根据需求来
childView.OptionsBehavior.Editable = false;
childView.OptionsView.ShowGroupPanel = false;
childView.OptionsView.ColumnAutoWidth = false;

//构建GridLevelNode并添加到LevelTree集合里面
var node = new GridLevelNode();
node.LevelTemplate = this.ChildView;
node.RelationName = "关系名称";// 关系名称 如果是对象 就填对象名称 如 Items 是表 就填表关系字段

this.LevelTree.Nodes.AddRange(new GridLevelNode[] {
      node });

//添加对应的视图集合显示
this.ViewCollection.Add(this.ChildView);

//创建从表显示的列
childView.Columns.Clear();

List<string> ChildViewSortColumnList=new List<string>();// 要显示的列 字段名丢进去
Dictionary<string, int> ChildViewCustomWidthColumnList=new Dictionary<string, int>();// 要设置的列宽 字段名和宽度丢进去
GridColumn gridColumn;
int columnIndex = 0;
foreach (var item in ChildViewSortColumnList)
{
     
    gridColumn = new GridColumn()
    {
     
        FieldName = item,
        Caption = item,
        VisibleIndex = columnIndex++
    };

    childView.Columns.Add(gridColumn);
}

ChildViewCustomWidthColumnList?.ForEach(x =>
{
     
    var column = childView.Columns.ColumnByFieldName(x.Key);
    if (column != null)
    {
     
        column.Width = x.Value;
    }
});

// 最后绑定上数据源
this.DataSource = dataSource;

你可能感兴趣的:(Dev GridLevelTree 主从表 自动加载)