使用 XAF+EF+Generics 使列表视图的 AllowEdit 默认为 true

Getting AllowEdit to default to true for a listview with XAF+EF+Generics

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 默认情况下,此列表视图的 AllowDelete 和 AllowNew 属性 为 True,但 AllowEdit 为 false。

如何让 AllowEdit 为真,这样我就不必使用模型编辑器来覆盖它?

您可以使用生成器更新程序在代码中修改模型节点。

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

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

Devexpress xaf ungroup layout of inherited class. (programmaticaly)

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

我实施了埃里克的建议

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