c# - Acumatica PXGrid PXDropDown 值更改不会更新缓存
问题描述
缓存通知行中字段的修改,仅当网格行选择发生更改时。我有一个网格,行中有一个可编辑的记录: KiwiSaver 状态:
我在事件中添加了验证错误和控制“保存和导出”按钮的启用/禁用状态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"
我将非常感谢任何建议。
解决方案
您的页面 PXGrid 中可能需要 SyncPosition="True"
推荐阅读
- javascript - 使用 javascript 发出 json 请求
- reactjs - 反应材料表嵌套json
- ios - 有什么方法可以获取我的 iOS 应用程序的下载次数?
- r - TensorFlow 与 R
- django - Django+React:对正在进行的样板项目的文档审查
- java - 为什么有时eclipse在导入工作区时不需要.project和.classpath文件/eclipse如何将项目识别为项目?
- python - ModuleNotFoundError:没有名为“googletrans”的模块
- nuget - NuGet 在访问服务器时给我一个错误
- android - 如何检查android设备的firebase连接是否再次恢复?
- python-3.x - cx_freeze/PyQt5: pywintypes.error: (2, 'BeginUpdateResource', '系统找不到指定的文件。'