我有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