代码之家  ›  专栏  ›  技术社区  ›  Mr.B

Acumatica PXGrid PXDropDown值更改不会更新缓存

  •  0
  • Mr.B  · 技术社区  · 7 年前

    仅当网格行选择发生更改时,缓存才会通知行中字段的修改。 我有一个网格,行中有一条可编辑记录:KiwiSaver状态: enter image description here row_selected :

        protected virtual void MPNewDepartingEmployeesBatchItem_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
        {
            var row = e.Row as MPNewDepartingEmployeesBatchItem;
    
            if (row.IsNull()) return;
    
            AllEmployeesTransactions.Cache.RaiseExceptionHandling<MPNewDepartingEmployeesBatchItem.kiwiSaverStatus>(
                row, row.KiwiSaverStatus,
                string.IsNullOrEmpty(row.KiwiSaverStatus)
                    ? new PXSetPropertyException("KiwiSaver Status is not specified.", PXErrorLevel.Error)
                    : null);
    
            SaveAndExportBatchAction.SetEnabled(!(cache.Inserted.Cast<MPNewDepartingEmployeesBatchItem>().Any(a => string.IsNullOrEmpty(a.KiwiSaverStatus)) ||
                                                  cache.Updated.Cast<MPNewDepartingEmployeesBatchItem>().Any(a => string.IsNullOrEmpty(a.KiwiSaverStatus))));
    
        }
    

    当我在下拉列表中更改项目时直接执行。意味着,要应用更改,用户必须更改选择。 更改网格中的选择后,我尝试的所有事件也会引发。例如:

    public virtual void MPNewDepartingEmployeesBatchItem_KiwiSaverStatus_FieldUpdated(PXCache cache,
            PXFieldUpdatedEventArgs e)
        {
    
        }
    
        public virtual void MPNewDepartingEmployeesBatchItem_KiwiSaverStatus_FieldUpdating(PXCache cache,
            PXFieldUpdatingEventArgs e)
        {
    
        }
    
        protected virtual void MPNewDepartingEmployeesBatchItem_KiwiSaverStatus_FieldVerifying(
            PXCache sender, PXFieldVerifyingEventArgs e)
        {
    
        }
    

    我的网格如下所示:

     <px:PXGrid ID="grid" runat="server" DataSourceID="ds" Style="z-index: 100" AutoAdjustColumns="True"
        Width="100%" Height="150px" SkinID="PrimaryInquire" TabIndex="100" AllowShowHide="Server" StatusField="ErrorMessage"
        AllowSearch="True" FastFilterFields="Surname,Firstname,IRDNumber" RestrictFields="True" SyncPosition="True">
    
    
        <AutoSize Container="Window" Enabled="True" MinHeight="200" />
        <Levels>
            <px:PXGridLevel DataMember="AllEmployeesTransactions" Key="IRBatchItemID">
                <RowTemplate>
                    <px:PXTextEdit ID="Surname" runat="server" DataField="Surname" />
                    <px:PXTextEdit ID="MiddleName" runat="server" DataField="MiddleName" />
                    <px:PXTextEdit ID="EmployeeTitle" runat="server" DataField="EmployeeTitle" />
                    <px:PXTextEdit ID="IRDNumber" runat="server" DataField="IRDNumber" />
                    <px:PXTextEdit ID="BranchCD" runat="server" DataField="BranchCD" />
                    <px:PXTextEdit ID="TaxCode" runat="server" DataField="TaxCode" />
                    <px:PXTextEdit ID="EmployeeDOBDateTime1" runat="server" DataField="EmployeeDOBDateTime" />
                    <px:PXTextEdit ID="EmployeeStartDate" runat="server" DataField="EmployeeStartDate" />
                    <px:PXTextEdit ID="EmployeeEndDate" runat="server" DataField="EmployeeEndDate" />
                    <px:PXDropDown ID="KiwiSaverStatus" runat="server"
                        DataField="KiwiSaverStatus"
                        CommitChanges="True" />
                    <px:PXTextEdit ID="EmailAddress" runat="server" DataField="EmailAddress" />
                    <px:PXTextEdit ID="MobilePhoneNumber" runat="server" DataField="MobilePhoneNumber" />
                    <px:PXTextEdit ID="DaytimePhoneNumber" runat="server" DataField="DaytimePhoneNumber" />
                    <px:PXTextEdit ID="Country" runat="server" DataField="Country" />
                    <px:PXTextEdit ID="StreetName" runat="server" DataField="StreetName" />
                    <px:PXTextEdit ID="City" runat="server" DataField="City" />
                    <px:PXTextEdit ID="PostCode" runat="server" DataField="PostCode" />
                    <px:PXTextEdit ID="State" runat="server" DataField="State" />
                </RowTemplate>
                <Columns>
    
                    <px:PXGridColumn DataField="Surname" LinkCommand="payDetailsAction" />
                    <px:PXGridColumn DataField="Firstname" />
    
                    <px:PXGridColumn DataField="MiddleName">
                    </px:PXGridColumn>
                    <px:PXGridColumn DataField="EmployeeTitle">
                    </px:PXGridColumn>
                    <px:PXGridColumn DataField="IRDNumber">
                    </px:PXGridColumn>
                    <px:PXGridColumn DataField="BranchCD">
                    </px:PXGridColumn>
                    <px:PXGridColumn DataField="TaxCode">
                    </px:PXGridColumn>
                    <px:PXGridColumn DataField="EmployeeDOBDateTime">
                    </px:PXGridColumn>
                    <px:PXGridColumn DataField="EmployeeStartDate">
                    </px:PXGridColumn>
                    <px:PXGridColumn DataField="EmployeeEndDate">
                    </px:PXGridColumn>
                    <px:PXGridColumn DataField="KiwiSaverStatus"
                        Type="DropDownList"
                        CommitChanges="True">
                    </px:PXGridColumn>
                    <px:PXGridColumn DataField="EmailAddress">
                    </px:PXGridColumn>
                    <px:PXGridColumn DataField="MobilePhoneNumber">
                    </px:PXGridColumn>
                    <px:PXGridColumn DataField="DaytimePhoneNumber">
                    </px:PXGridColumn>
                    <px:PXGridColumn DataField="Country">
                    </px:PXGridColumn>
                    <px:PXGridColumn DataField="StreetName">
                    </px:PXGridColumn>
                    <px:PXGridColumn DataField="City">
                    </px:PXGridColumn>
                    <px:PXGridColumn DataField="PostCode">
                    </px:PXGridColumn>
                    <px:PXGridColumn DataField="State">
                    </px:PXGridColumn>
    
                </Columns>
            </px:PXGridLevel>
        </Levels>
    
        <ActionBar ActionsText="False" DefaultAction="payDetailsAction">
            <Actions>
                <AddNew MenuVisible="false" ToolBarVisible="false"></AddNew>
                <Delete MenuVisible="false" ToolBarVisible="false"></Delete>
                <Refresh MenuVisible="False" ToolBarVisible="False"></Refresh>
            </Actions>
            <CustomItems>
                <px:PXToolBarButton Text="View Pay Details" Key="payDetailsAction" Tooltip="View pay details the currently selected employee" Visible="False">
                    <AutoCallBack Command="PayDetailsAction" Target="ds">
                    </AutoCallBack>
                </px:PXToolBarButton>
            </CustomItems>
        </ActionBar>
        <Mode AllowAddNew="false" AllowDelete="false" />
    </px:PXGrid>
    

    我需要做什么来通知我的图表行中的记录已直接更改? 例如,在WPF中,我们有UpdateSourceTrigger=“PropertyChanged”

    我将非常感谢您的任何建议。

    2 回复  |  直到 7 年前
        1
  •  0
  •   Brendan    7 年前

    您可能需要在页面中使用SyncPosition=“True”

        2
  •  0
  •   Mr.B    7 年前

    我找到了解决办法。它不会导致在选择后直接引发事件,但当您单击“保存和导出”按钮时,缓存已经知道此字段已更改 没有 您需要定义:

    1. SyncPosition="True" 在数据网格中
    2. [PXButton(CommitChanges = true)]
    推荐文章