【问题标题】:How to hide some cards in DevExpress Master Detail DataGrid?如何在 DevExpress Master Detail DataGrid 中隐藏一些卡片?
【发布时间】:2018-12-23 23:23:35
【问题描述】:

我想在填充了行值列表的 DataGrid 中显示一些(但不是全部)数据:

public class RowValue 
{
    public int id;
    public string name;
    public List<A> list1;
    public List<B> list2;
}

public class A
{
    public int id;
    public string val1;
    public string val2;
    ...
}

public class B
{
    public int id;
    public string val1;
    public string val2;
    ...
}

当我在 Master-Detail DataGrid 中展开一行时,我看到两张卡片显示每个列表的行(list1 和 list2)。我想隐藏 list1 在我的 DataGrid 中查看。目前我可以隐藏 list1 中的所有列,但带有标题的空卡仍在污染 GridView。

void gridView_MasterRowExpand(object sender, CustomMasterRowEventArgs e)
{
   var masterView = sender as GridView;
   GridView detailView = masterView?.GetDetailView(e.RowHandle, e.RelationIndex) as GridView;
   if(detailView == null) return;

   //disabling Columns
   if(detailView.LevelName == "list1")
       foreach(var column in detailView.Columns)
           column.Visible = false;
}

为了说明我的问题,我附上了一张带有已删除所有列的卡片的图片。

Empty card I wish to remove from view.

【问题讨论】:

  • 也许你可以添加一个AppearanceAttributelist1 来控制它的Visibility 并隐藏它。另一种选择是AppearanceController。工作吗?
  • 没用。更多信息在我的问题更新中。
  • 我很惊讶似乎没有简单的方法来做到这一点......

标签: c# datagridview devexpress devexpress-windows-ui devexpress-gridcontrol


【解决方案1】:

我成功地完成了这项任务。我认为最简单的答案是在 MasterRowEmpty 事件中将 e.IsEmpty Arg 设置为 true。见以下代码:

void gridView_MasterRowEmpty(object sender, MasterRowEmptyEventArgs e)
{
    GridView view = sender as GridView;
    if(view.GetRelationName(e.RowHandle, e.RelationIndex) == "list1")   // == "Card Name"
        e.IsEmpty = true;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多