对于使用XAF + EF + Generics的列表视图,将AllowEdit默认设置为true

时间:2015-06-05 02:19:37

标签: entity-framework devexpress xaf

XAF没有正式支持泛型。 但是我使用它们并且爱它们。

[DomainComponent]
Public abstract class SalesHeader<TSalesLine> : BasicBO
    where TSalesLine : SalesProductTransactionLine
{

    public virtual BindingList<TSalesLine> Lines { get; set; } 

}

[DomainComponent]
public class SalesOrder : SalesHeader<SalesOrderLine>, ISalesHeader<SalesOrderLine>

{
    public SalesOrder()
    {
        Lines = new BindingList<SalesOrderLine>();
        ContactPerson = new Person();   //etc

    }
}

这将在名为SalesHeader [SalesOrderLine] _Lines_ListView的模型中创建一个视图 默认情况下,此listview的AllowDelete和AllowNew属性为True,但AllowEdit为false。

如何让AllowEdit成为现实,以便我不必使用模型编辑器来覆盖它?

2 个答案:

答案 0 :(得分:1)

您可以使用Generator Updaters修改代码中的模型节点。

此方法与EF或Generics无关,但您可以根据View ObjectType触发此行为。

您可能会发现以下参考资料有用:

Devexpress xaf ungroup layout of inherited class. (programmaticaly)

How to: Create Additional ListView Nodes in Code via a Generator Updater

答案 1 :(得分:0)

我实施了Erik的建议

   public class CustomListViewItemUpdater : ModelNodesGeneratorUpdater<ModelViewsNodesGenerator>
    {
        public override void UpdateNode(ModelNode node)
        {
            var a = node["SalesHeader[SalesOrderLine]_Lines_ListView"];
            ((IModelListView)(a)).AllowEdit = true;
        }
    }