procedure TYJDSH.refreshTaskList;
var lBizItem:TBizObject;
begin
//刷新任务列表
// lBizItem:=context.FindParentContext('GLOBAL').findItem('Biz:\COLLABORATION\DesktopFunc.Func');
lBizItem:=context.FindParentContext('GLOBAL').GetBizObject(ibTask.BizClassRef);
if lBizItem=nil then
exit;
// with DESKTOPFUNC.TMAINFORM(DESKTOPFUNC.TDESKTOPFUNC(lBizItem).MainForm).dsbTask.dataset do
with TASKCENTERINFO.TTASKCENTERINFO(ibTask.info).datasetById('TaskIndex') do
begin
if not isEmpty then
refresh;
end;
end;
//刚才上面的那句写错了。 TTASKCENTERINFO(ibTask.info)要改成TTASKCENTERINFO(lBizItem)
//不过还是不对,这样找出来的数据集是空的? 不过我的工作台确实是有记录的。
with TASKCENTERINFO.TTASKCENTERINFO(lBizItem).datasetById('TaskIndex') do
begin
if not isEmpty then
refresh;
end;
const
cDesktopURL = 'Biz:\COLLABORATION\DesktopFunc.Func';
cTaskCenterURL = 'Biz:\COLLABORATION\TASKCENTERINFO.INFO';
var
lBizObject: TBizObject;
i: Integer;
lContext: TContext;
begin
lContext := Context.FindParentContext(BizSys.IL_PERSON); //人员环境
//在人员环境找工作台功能
for i:=0 to lContext.ChildCount-1 do
try
if SysUtils.SameText(cDesktopURL, (lContext.Children.Owner as TFunc).BizClassURL.BizURL.URL) then
lBizObject := lContext.Children.Owner;
except
end;
if lBizObject=nil then exit;
//在工作台功能上找任务中心信息
lContext := lBizObject.Context;
for i:=0 to lContext.ChildCount-1 do
try
if SysUtils.SameText(cTaskCenterURL, (lContext.Children.Owner as TInfo).BizClassURL.BizURL.URL) then
lBizObject := lContext.Children.Owner;
except
end;
//刷新数据集
(lBizObject as TInfo).DataSetByID('TaskIndex').Refresh;
8楼的代码也不行啊。
出错 //刷新数据集
(lBizObject as TInfo).DataSetByID('TaskIndex').Refresh;
“cannot perfomr this action on a closed dataset.. ” 跟6楼的方式2)是一样的错误。
还有:
//在人员环境找工作台功能
for i:=0 to lContext.ChildCount-1 do
try
if (lContext.Children.Owner is TFunc) then //**********这边必须加上类型判断,不然会出错。
if SysUtils.SameText(cDesktopURL, (lContext.Children.Owner as TFunc).BizClassURL.BizURL.URL) then
lBizObject := lContext.Children.Owner;
except