U8开发之单据列表控件教案资料Word文档下载推荐.docx
《U8开发之单据列表控件教案资料Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《U8开发之单据列表控件教案资料Word文档下载推荐.docx(30页珍藏版)》请在冰豆网上搜索。
一、列表控件(V11.0)增加的特性:
1.集成【快捷过滤】功能;
类似原来各列表界面里toolbar上的查询\刷新\[滤设]功能。
查询按钮下拉查询方案:
默认操作兼容原有功能。
查询支持方案和快捷条件详细设置:
【快捷过滤】相关的业务组代码调整:
调整过滤对象的查询方法(UFGeneralFilter.FilterSrv.OpenFilter)调用,修改为调用过滤对象初始化方法(UFGeneralFilter.FilterSrv.InitBaseVarValue),参数传递与过滤对象查询原来的方法(UFGeneralFilter.FilterSrv.OpenFilter)兼容。
然后调用新单据列表控件的快捷过滤初始化方法(VouchList.InitFlt),把初始化好的过滤对象传入(如果没有过滤对象,也可以直接传入过滤对象ID或过滤对象名称+子系统号)。
代码修改前后对比示例如下(灰色字体部分是已经被注释的修改前的代码,下同):
…(引用的是服务协议列表代码修改模型)
Setm_opub=CreateObject("
UFGeneralFilter.FilterSrv"
)
'
bSuccess=m_opub.OpenFilter(g_Login,"
6729D410-233A-4674-A48A-2C34C17B82F6"
"
"
ErrInfo)
'
lliang_2011-11-22_[单据列表]:
快捷过滤
bSuccess=m_opub.InitBaseVarValue(g_Login,"
…
Call
VouchList.InitFlt(g_Login,m_opub,"
Err)
参数1:
Login对象
参数2:
过滤对象
参数3:
条件的Key
参数4:
过滤的名称
参数5:
子产品号
参数6:
返回的错误信息
返回值:
如果返回为False表明出现失败
说明:
你可以用参数2,忽略参数3、4、5或用参数3而忽略参数2和4、5或用参数4、5而忽略2和3.
注意事项:
调用此初始化方法的时机要求在Form_Load事件里,目前大部分产品的过滤对象调用(m_opub.OpenFilter)都是在相应的类模块或其他非窗体模块处理,所以需要各模块根据实际情况把过滤对象变量有效传递到窗体然后在Form_Load事件里调用。
推荐的方法是事前在窗体模块声明全局变量,然后在调用过滤对象的地方把已经初始化好的过滤对象暂时赋值给窗体的全局变量,最后在Form_Unload事件里即时的释放该全局变量。
//直接在列表控件(V11.0)新增的查询事件中(FilterClick)调用原来的“查询”功能即可,同时把此事件返回的过滤对象参数一并传递到原查询功能。
…
PrivateSubVouchList_FilterClick(fldsrvAsObject)
Operating("
filter"
fldsrv)
EndSub
注:
是否显示快捷过滤依据的是原列表是否支持查询功能。
附:
快捷过滤预置表:
Data库的flt_quickconditionset表
对应字段说明:
filterid过滤编号
userid用户编号,业务组预置用固定的system
itemName用于快捷过滤的项的名称如:
cDepName
2.集成【翻页】功能;
取代原来各列表界面手工翻页或采用平台翻页控件的功能。
【翻页】相关的业务组代码调整:
1)业务代码原列表界面中使用平台的翻页控件(PagedivCtl)的情况:
在调用平台翻页控件绑定分页引擎的地方直接修改为用列表控件(V11.0)绑定分页引擎,接口方法和传递参数完全兼容,同时删除原平台翻页控件并把相关的代码注释(包括原翻页控件涉及的事件),同时把原翻页控件对应的事件实现在列表控件对应的事件中实现(事件兼容
)。
…(引用的是销售订单列表代码修改模型)
CallPagedivCtl1.BindPagediv(m_pagediv)
翻页
CallVchLst.BindPagediv(m_pagediv)
PrivateSubPagedivCtl1_BeforeSendCommand(cmdTypeAsU8VouchList.UFCommandType,pageSizeAsLong,pageCurrentAsLong)
Me.VchLst.SetVchLstRstNothing
Me.VchLst.FillMode=FillOverwrite
EndSub
PrivateSubVchLst_BeforeSendCommand(cmdTypeAsU8VouchList.UFCommandType,pageSizeAsLong,pageCurrentAsLong)
2)业务代码原列表界面没有采用平台的翻页控件,是自己处理的翻页功能的情况,时还不想采用先前到翻页控件的方式(原因:
代码改动太大,可能出错的情况也多,而且直接影响由列表导航出的单据卡片翻页的界定范围),只是希望直接借用列表控件(V11.0)的翻页框架,而列表数据的获取保持不变(还是由业务组直接获取传递给列表控件)。
就此方案代码模板示例如下:
//1、申明分页引擎变量
…(引用的是库存所有单据列表代码修改模型)
lliang_2011-12-02_[新单据列表]:
PrivateWithEventsm_pagedivAsPagediv
分页引擎
//2、FormLoad事件里初始化分页引擎并绑定到列表控件(V11.0)上(列表数据的加载过程保持不变,并且此必须放到列表数据加载之前执行,并且确认列表数据加载后给原有的列表属性RecordCount正确赋值了-应该是总记录数,而不是当前页显示的记录数)
Setm_pagediv=NewPagediv
m_pagediv.PageInfo.CurrentPage=txtPage.Text
m_pagediv.PageInfo.pageSize=txtSize.Text
‘注:
此两处代码赋值逻辑需要在运行期检查原控件值是否存在
CallVouchList1.BindPagediv(m_pagediv)
//3、在列表控件新增的翻页相关的事件中实现原来的手工翻页逻辑。
PrivateSubVouchList1_BeforeSendCommand(cmdTypeAsU8VouchList.UFCommandType,pageSizeAsLong,pageCurrentAsLong)
txtSize.Text=pageSize
SelectCasecmdType
CaseUFFirst
cmdFirst_Click
CaseUFPrevious
cmdPer_Click
CaseUFNext
cmdNext_Click
CaseUFLast
cmdLast_Click
CaseUFOK
cmdOK_Click
CaseElse
EndSelect
是否显示翻页依据的是原列表是否支持翻页功能。
3)业务代码原列表界面没有采用平台的翻页控件,而是自己处理的翻页功能的情况:
这种情况需要首先把业务组手工增加的列表翻页功能到平台翻页控件,然后再根据第1)种情况对应的方法到列表控件(V11.0),也可由手工的列表翻页功能直接到列表控件(V11.0)的翻页。
至于如何从手工翻页功能到平台的翻页控件,这个可以咨询目前已经采用平台翻页控件的业务组成员处理(其中由列表导航出的单据卡片翻页的界定范围需要通过列表过滤条件串约束),在此也简单就代码修改过程示例说明一下:
(新作单据列表时必须使用)
…(引用的是库存的其他入库单列表代码修改模型)
PrivateWithEventsm_pagedivAsPagediv'
Privatem_coniAsIPagedivConi'
条件,基本上都是从U8Colset中进行初始化
//增加如下列表分页初始化方法,一个分页引擎事件。
PrivateSubInitPagedivCtl(oColSetAsObject,mCnnAsConnection,VouchListAsObject,strWhereAsString)
‘初始化分页控件
CallInitConi(oColSet,strWhere,m_coni)
Callm_pagediv.Initialize(mCnn,m_coni)
‘CallPagedivCtl1.BindPagediv(m_pagediv)
CallVouchList.BindPagediv(m_pagediv)
Callm_pagediv.LoadData
初始化分页条件
PublicSubInitConi(ByValoColSetAsObject,strWhereAsString,m_coniAsIPagedivConi)
OnErrorGoToErrHandler
Ifm_coniIsNothingThen
Setm_coni=NewDefaultPagedivConi
EndIf
m_coni.From="
KCOtherInList"
此处需要通过一个专门的方法获取列表对应的数