我有一个网格(显示设备)和动作材料(智能面板中的网格-显示每个设备的材料)。
在“获取设备”操作(下面的代码)中,我想将另一个表中的设备加载到此网格中,还将每个设备的材料加载到智能面板“材料”中。
执行动作后,仅显示设备。 “材料”面板上没有任何记录,我尝试按下“刷新”按钮,但仍然没有数据。
神奇的是,在我按下标题中的“保存”按钮之后,“材料”中的数据可以正确显示。
public PXAction<PSMTPhieuYeuCauSuaChuaMHTBHeader> GetDevices;
[PXUIField(DisplayName = "Get Devices")]
[PXButton(CommitChanges = true)]
protected void getDevices()
{
PSMTRequestRepairMaint thisGraph = PXGraph.CreateInstance<PSMTRequestRepairMaint>();
foreach (var record in PSMTPhieuYeuCauSuaChuaMMTBDeviceSelectedView.Cache.Updated)
{
PSMTPhieuYeuCauSuaChuaMMTBViewDevice device = (PSMTPhieuYeuCauSuaChuaMMTBViewDevice)record;
if (device.Check.HasValue && device.Check.Value)
{
PSMTPhieuYeuCauSuaChuaMMTBLineGrid line = (PSMTPhieuYeuCauSuaChuaMMTBLineGrid)thisGraph.PSMTPhieuYeuCauSuaChuaMMTBLineGridView.Cache.CreateInstance();
line = PSMTPhieuYeuCauSuaChuaMMTBLineGridView.Insert(line);
line.DeviceID = device.HeaderID;
line.FromDate = device.LastMaintenanceDate;
line.ToDate = device.LastMaintenanceDate;
device.Check = false;
line = PSMTPhieuYeuCauSuaChuaMMTBLineGridView.Update(line);
var materials = PXSelect<PSMTAllowedReplacementMaterial,
Where<PSMTAllowedReplacementMaterial.headerID,
Equal<Required<PSMTPhieuYeuCauSuaChuaMHTBHeader.soMay>>>>.Select(this, line.DeviceID);
foreach (var item in materials)
{
var allowedMaterial = (PSMTAllowedReplacementMaterial)item;
PSMTPhieuYeuCauSuaChuaMMTBMaterial material = (PSMTPhieuYeuCauSuaChuaMMTBMaterial)thisGraph.PSMTPhieuYeuCauSuaChuaMMTBMaterialView.Cache.CreateCopy(new PSMTPhieuYeuCauSuaChuaMMTBMaterial());
material = PSMTPhieuYeuCauSuaChuaMMTBMaterialView.Insert(material);
//material.LineGridID = line.GridID;
material.MaterialID = allowedMaterial.MaterialID;
material.Quantity = allowedMaterial.Quantity;
material = PSMTPhieuYeuCauSuaChuaMMTBMaterialView.Update(material);
}
}
}
}
网格
面板