使用 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;
}
}
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;
}
}