其他分享
首页 > 其他分享> > Dev GridLevelTree 主从表 自动加载

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;

标签:childView,从表,GridLevelTree,false,Dev,var,new,GridControl,主从
来源: https://blog.csdn.net/weixin_44734310/article/details/113559560