我有ProductLine和ProductLineItem DAC。产品线包含相关库存物料的集合。带搜索BQL的PXSelector可防止记录删除
public class ProductLine : IBqlTable
{
[PXDBIdentity()]
public virtual int? LineID { get; set; }
public abstract class lineID : IBqlField { }
[PXDBString(50, IsKey = true)]
[PXUIField(DisplayName = "Line ID")]
[PXDefault]
[PXSelector(typeof(ProductLine.lineCD),
typeof(ProductLine.lineCD),
typeof(ProductLine.description))]
public virtual string LineCD { get; set; }
public abstract class lineCD : IBqlField { }
// ...
}
public class ProductLineItem : IBqlTable
{
[PXDBInt(IsKey = true)]
[PXDBDefault(typeof(ProductLine.lineID))]
[PXParent(typeof(Select<ProductLine,
Where<ProductLine.lineID,
Equal<Current<ProductLineItem.lineID>>>>))]
public virtual int? LineID { get; set; }
public abstract class lineID : IBqlField { }
[PXDBInt(IsKey = true)]
[PXUIField(DisplayName = "Inventory ID")]
[PXSelector(
typeof(Search2<InventoryItem.inventoryID,
LeftJoin<ProductLineItem,
On<ProductLineItem.lineID, Equal<Current<ProductLineItem.lineID>>,
And<ProductLineItem.inventoryID, Equal<InventoryItem.inventoryID>>>>,
Where<InventoryItem.itemStatus, Equal<InventoryItemStatus.active>,
And<ProductLineItem.lineID, IsNull>>>),
new Type[] {
typeof(InventoryItem.inventoryCD),
typeof(InventoryItem.descr)
},
SubstituteKey = typeof(InventoryItem.inventoryCD))]
public virtual int? InventoryID { get; set; }
public abstract class inventoryID : IBqlField { }
// ...
}
这些然后在一个非常简单的FormDetail入口页面中实现。
public class ProductLineEntry : PXGraph<ProductLineEntry, ProductLine>
{
public PXSelect<ProductLine> ProductLines;
public PXSelect<ProductLineItem,
Where<ProductLineItem.lineID,
Equal<Current<ProductLine.lineID>>>> ProductLineItems;
}
ProductLineItem.inventoryID上的PXSelector提供尚未添加到当前产品线的活动项目。但是,如果像这样编写选择器,试图从网格中删除项目会显示红色的“x”指示符,但会显示record is never actually removed。
改变PXSelector到一个更基本的一个没有搜索2 <> ...
[PXSelector(typeof(InventoryItem.inventoryID),
typeof(InventoryItem.inventoryCD),
typeof(InventoryItem.descr),
SubstituteKey = typeof(InventoryItem.inventoryCD))]
...记录正常删除。
如何在选择器中使用搜索<> BQL并仍然能够从细节网格中删除记录?
谢谢鲁斯兰。如果其他人提到这个答案,我会注意到提供的示例代码有一个小错误,即最后一个操作符不应使用Current <>,当然与inventoryID而不是lineID: '或>' –
@NickolasHook,非常感谢您指出 - 我已更新代码以使用ProductLineItem.inventoryID代替。但是我确实认为使用Current <>操作符仍然是必需的。此外,我建议设置** AutoRefresh **为*** True ***,以便在Aspx中进行PXSelector输入,以确保为选定记录显示查找网格的内容。 – RuslanDev