acumatica
하나의 선택기로 여러 값으로 필터링
수색…
소개
그리드를 필터링하기 위해 셀렉터 내부에 여러 값을 갖는 방법이 있습니다.
멀티 플립 고객에 대한 판매 오더 검색
선택기에서 여러 값을 사용하여 일부 레코드를 필터링하려고 할 때. 먼저 일반 px : PXSelector 대신 aspx 페이지에서 px : PXMultiSelector를 사용해야합니다. 그런 다음 적어도 세 개의 뷰와 뷰 대리자가 포함 된 그래프를 만들어야합니다. 적어도 기본적인 언 바운드 DAC가 필요합니다.
다음은 px가있는 샘플 페이지입니다 : PXMultiSelector :
<%@ Page Language="C#" MasterPageFile="~/MasterPages/FormDetail.master" AutoEventWireup="true" ValidateRequest="false" CodeFile="TT000000.aspx.cs" Inherits="Page_TT000000" Title="Untitled Page" %>
<%@ MasterType VirtualPath="~/MasterPages/FormDetail.master" %>
<asp:Content ID="cont1" ContentPlaceHolderID="phDS" runat="Server">
<px:PXDataSource ID="ds" runat="server" Visible="True" Width="100%"
TypeName="MultiSelector.MultiInquiry"
PrimaryView="MasterView">
<CallbackCommands>
</CallbackCommands>
</px:PXDataSource>
</asp:Content>
<asp:Content ID="cont2" ContentPlaceHolderID="phF" runat="Server">
<px:PXFormView ID="form" runat="server" DataSourceID="ds" DataMember="MasterView" Width="100%" Height="100px" AllowAutoHide="false">
<Template>
<px:PXMultiSelector ID="edInventoryID" runat="server" Width="100%" DataSourceID="ds" DataField="Customer" CommitChanges="True"></px:PXMultiSelector>
</Template>
</px:PXFormView>
</asp:Content>
<asp:Content ID="cont3" ContentPlaceHolderID="phG" runat="Server">
<px:PXGrid ID="grid" runat="server" DataSourceID="ds" Width="100%" Height="150px" SkinID="Details" AllowAutoHide="false">
<Levels>
<px:PXGridLevel DataMember="DetailsView">
<Columns>
<px:PXGridColumn DataField="OrderType" Width="70"></px:PXGridColumn>
<px:PXGridColumn DataField="OrderNbr" Width="200"></px:PXGridColumn>
<px:PXGridColumn DataField="OrderDesc" Width="100"></px:PXGridColumn>
<px:PXGridColumn DataField="CustomerOrderNbr" Width="100"></px:PXGridColumn>
<px:PXGridColumn DataField="Status" Width="100"></px:PXGridColumn>
<px:PXGridColumn DataField="RequestDate" Width="100"></px:PXGridColumn>
<px:PXGridColumn DataField="ShipDate" Width="100"></px:PXGridColumn>
<px:PXGridColumn DataField="CustomerID" Width="100"></px:PXGridColumn>
</Columns>
</px:PXGridLevel>
</Levels>
<AutoSize Container="Window" Enabled="True" MinHeight="150" />
<ActionBar>
</ActionBar>
</px:PXGrid>
</asp:Content>
다음은 뷰와 대리자가있는 샘플 그래프입니다.
public class MultiInquiry : PXGraph<MultiInquiry>
{
public PXCancel<MasterTable> Cancel;
public PXFilter<MasterTable> MasterView;
public PXSelect<SOOrder> DetailsView;
public PXSelectJoin<SOOrder, LeftJoin<BAccount, On<SOOrder.customerID, Equal<BAccount.bAccountID>>>, Where<BAccount.acctCD, In<Required<BAccount.acctCD>>>> Orders2;
protected virtual IEnumerable detailsView()
{
var list = new List<SOOrder>();
var customers = MasterView.Current.Customer;
if (customers != null)
{
List<string> customerList = new List<string>();
customerList.AddRange(customers.Split(new string[] { "; " }, StringSplitOptions.None));
object[] val = new object[] { customerList.ToArray() };
foreach (PXResult<SOOrder> res in Orders2.Select(val))
{
SOOrder order = res;
list.Add(order);
}
}
return list;
}
}
여기에는 MultiSelector에 사용 된 필드의 정의가 들어있는 DAC와 고객 계정을 선택하기위한 상수가 추가되었습니다.
[Serializable]
public class MasterTable : IBqlTable
{
#region InventoryID
public abstract class customer : IBqlField { }
[PXString()]
[PXUIField(DisplayName = "Customer")]
[PXSelector(typeof(Search<BAccount.acctCD, Where<BAccount.type, Equal<CustomerType>>>), ValidateValue = false)]
public virtual string Customer { get; set; }
#endregion
}
public class CustomerType : Constant<string> { public CustomerType() : base("CU") { } }
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow