Suche…


Einführung

Hier haben Sie die Möglichkeit, mehrere Werte innerhalb eines Selektors zu haben, um ein Gitter zu filtern.

Kundenauftrag für Mehrfachkunden abrufen

Beim Versuch, einen Datensatz mit mehreren Werten in einem Selektor zu filtern. Zuerst müssen Sie den px: PXMultiSelector auf der aspx-Seite anstelle des normalen px: PXSelector verwenden. Danach müssen Sie sich ein Diagramm erstellen, das mindestens drei Ansichten und einen Ansichtsdelegierten enthält. Sie benötigen außerdem mindestens einen einfachen ungebundenen DAC.

Hier ist eine Beispielseite mit dem 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>

Hier ist das Beispieldiagramm mit den Ansichten und dem Delegierten.

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

Dazu fügen wir den DAC hinzu, der die Definition für das Feld enthält, das im MultiSelector verwendet wird, und die Konstante, um nur Kundenkonten auszuwählen.

    [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") { } }

Und das Ergebnis für dieses Beispiel könnte so aussehen: Geben Sie hier die Bildbeschreibung ein



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow