2016-06-03 16 views
0

Ich bin in einer interessanten Situation auf einer Erweiterung, an der ich arbeite.InitRow = true Lösche alle Datensätze

Die Erweiterung existiert auf dem Bildschirm Kundenstandort und hat ein zusätzliches Raster.

Der DAC für dieses Gitter hat vier Primärschlüssel

CompanyID, BAccountID, LocationID, SortOrder

Primärschlüssel in dem DAC sind definiert als

folgt
#region BAccountID 

    public abstract class bAccountID : PX.Data.IBqlField 
    { 
    } 

    protected int? _BAccountID; 

    [PXDBInt(IsKey = true)] 
    [PXDefault(typeof(Location.bAccountID))] 
    public virtual int? BAccountID 
    { 
     get 
     { 
      return this._BAccountID; 
     } 
     set 
     { 
      this._BAccountID = value; 
     } 
    } 

    #endregion BAccountID 

    #region LocationID 

    public abstract class locationID : PX.Data.IBqlField 
    { 
    } 

    protected int? _LocationID; 

    [PXDBInt(IsKey = true)] 
    [PXDefault(typeof(Location.locationID))] 
    public virtual int? LocationID 
    { 
     get 
     { 
      return this._LocationID; 
     } 
     set 
     { 
      this._LocationID = value; 
     } 
    } 

    #endregion LocationID 

    #region SortOrder 

    public abstract class sortOrder : PX.Data.IBqlField 
    { 
    } 

    protected int? _SortOrder; 

    [PXDBInt(IsKey = true)] 
    [PXDefault] 
    [PXLineNbr(typeof(CWACustomerLocationItem))] 
    [PXParent(typeof(Select<CWACustomerLocationItem, 
     Where<CWACustomerLocationItem.bAccountID, Equal<Current<Location.bAccountID>>, And<CWACustomerLocationItem.locationID, Equal<Current<Location.locationID>>>>>))] 
    [PXUIField(DisplayName = "Sort Order", Enabled = false)] 
    public virtual int? SortOrder 
    { 
     get 
     { 
      return this._SortOrder; 
     } 
     set 
     { 
      this._SortOrder = value; 
     } 
    } 

    #endregion SortOrder 

Die Ausgabe I Wenn ich in der Rasterdefinition bin, setze ich "InitRow = false", die erste Zahl in der Sortierreihenfolge beginnt bei 2 statt bei 1 und fügt sich erst hinzu, wenn die Zeile com ist plete.

Wenn ich "InitRow = true" beim Hinzufügen einer neuen Zeile einstelle, beginnt die Eigenschaft sortorder bei 1 und wird richtig inkrementiert. Wenn ich jedoch eine neue Zeile hinzufüge und keine anderen Werte aktualisiere (nur sortorder wird angezeigt), wenn alle gespeichert werden Zeilen im Raster werden gelöscht.

Ich habe bestätigt, dass alle „Nicht-Null“ Felder in der Datenbank als solche angegeben sind in dem DAC

Voll Grid ist definiert als unter

<px:PXGrid runat="server" ID="CstPXGrid1" Width="100%" SkinID="DetailsInTab" KeepPosition="True" SyncPosition="True"> 
     <Levels> 
      <px:PXGridLevel DataMember="LocationItem"> 
      <Columns> 
       <px:PXGridColumn DataField="SortOrder" Width="70" /> 
       <px:PXGridColumn DataField="InventoryID" Width="120" AutoCallBack="True" /> 
       <px:PXGridColumn DataField="InventoryID_description" Width="200" /> 
       <px:PXGridColumn DataField="SellingUOM" Width="70" /> 
       <px:PXGridColumn DataField="SellingPrice" Width="100" /> 
       <px:PXGridColumn DataField="MinQty" Width="100" /> 
       <px:PXGridColumn DataField="MaxQty" Width="100" /> 
       <px:PXGridColumn DataField="EOQ" Width="100" /> 
       <px:PXGridColumn DataField="Comments" Width="70" /> 
       <px:PXGridColumn DataField="Inactive" Width="60" Type="CheckBox" /></Columns></px:PXGridLevel></Levels> 
     <AutoSize Enabled="True" Container="Parent" MinHeight="200" /> 
     <ActionBar> 
      <CustomItems> 
      <px:PXToolBarButton Text="Up" Tooltip="Move Node Up" CommandName="Up" Visible="True" CommandSourceID="ds"> 
       <Images Normal="[email protected]" /></px:PXToolBarButton> 
      <px:PXToolBarButton Text="Down" Tooltip="Move Node Down" CommandSourceID="ds" CommandName="Down"> 
       <Images Normal="[email protected]" /></px:PXToolBarButton></CustomItems></ActionBar> 
     <AutoCallBack Enabled="True" /> 
     <Mode InitNewRow="True" /></px:PXGrid> 

ich verwendet habe, „InitRow“ einige andere Male und sind nicht in dieses geraten, also bin ich nicht sicher, wo genau der Fehler ins Spiel kommt.

Die Tatsache, dass es beim Speichern alle Zeilen löscht, stört mich am meisten.

Hat jemand irgendwelche Theorien oder Ratschläge, wonach er suchen soll?

+0

Wenn in diese ein bisschen mehr suchen, wenn es um die Datensätze löscht, wird es alle Datensätze in der Tabelle zu löschen. nicht nur für den aktuellen Kunden –

Antwort

2

Ich glaube, ich habe das Problem herausgefunden. Die Definition von PXParent/Nummer ist oben falsch.

Der DAC richtige sortorder ist unten:

[PXDBInt(IsKey = true)] 
    [PXDefault()] 
    [PXLineNbr(typeof(Location),false)] 
    [PXParent(typeof(Select<Location, 
     Where<Location.bAccountID, Equal<Current<CWACustomerLocationItem.bAccountID>>, And<Location.locationID, Equal<Current<CWACustomerLocationItem.locationID>>>>>))] 
    [PXUIField(DisplayName = "Sort Order", Enabled = false)] 
Verwandte Themen