问题描述
我需要通过单击按钮的方法删除列表小程序中的所有记录。为了实现这一点,我使用“DeleteallRecords”方法向列表小程序添加了一个按钮,并向 BC PreInvokeMethod 函数添加了一个脚本,如下所示。单击按钮后,所有记录都将被删除,但小程序不会刷新。我怎样才能做到这一点?
try
{
if(MethodName == "DeleteallRecords")
{
var EmpBO = TheApplication().GetBusObject("XXXX");
var EmpBC = EmpBO.GetBusComp("XXXX");
with(EmpBC)
{
Setviewmode(AllView);
ActivateField("EmployeeID");
ClearToQuery();
SetSearchExpr("[XXXX] <> ' '");
ExecuteQuery(ForwardOnly);
var Frecord = FirstRecord();
while(Frecord)
{
Frecord = DeleteRecord();
Frecord = FirstRecord();
}
}
//BC.InvokeMethod("RefreshBuscomp");
return (CancelOperation);
}
}
catch(e)
{
throw(e);
}
finally
{
EmpBO = null;
EmpBC = null;
}
return (ContinueOperation);
解决方法
你可以尝试一些事情。 1:在所有删除完成后,最后一个简单的空查询。 ClearToQuery() 和 ExecuteQuery(); 2:RefreshBusComp 有一个 BC 方法(检查文档),可以与 InvokeMethod() 一起使用。与 1 的功能几乎相同。我看到您已经尝试过,但可能没有用。
3:有可以刷新小程序的业务服务,例如 FINS Teller UI 导航。
4:您也可以在 browserscript/javascript 中尝试空查询,将其放入 InvokeMethod,以便它在 BC escript 之后运行。必须运行 Genb 才能生成 bscript。
其中一个应该可以工作。