logo资料库

U8开发之单据列表控件.docx

第1页 / 共32页
第2页 / 共32页
第3页 / 共32页
第4页 / 共32页
第5页 / 共32页
第6页 / 共32页
第7页 / 共32页
第8页 / 共32页
资料共32页,剩余部分请下载后查看
U8单据列表控件
摘要
概念说明
目标
文档内容
一、列表控件(V11.0)增加的特性:
1.集成【快捷过滤】功能;类似原来各列表界面里toolbar上的查询\刷新\[滤设]功能。
2.集成【翻页】功能;取代原来各列表界面手工翻页或采用平台翻页控件的功能。
3.改变【行选择】功能;取代原来各列表界面里toolbar上的全选/全消功能,同时取代以前双击列表选择列
4.调整【筛选】功能;取代原来列表控件自带的小漏斗按钮‘筛选’功能。
5.美化行记录的间隔背景色[了解];
6.新增【自动折行】功能;
7.新增【复制】功能;
8.新增【设计打印模板方案】功能;
9.列表栏目新增计算列功能;
10.单据列表界面TooLbar公共通用按钮的逻辑处理[了解]
11.单据列表支持EAI输出快速实施格式的XLS文件
12.新增【条件设置】-着色功能
13.新增【布局】功能;
14.【快捷过滤动态布局】相关的业务组代码调整:列表控件(V11.0)增加了对应的接口方法(IsFltVe
15.【收藏到常用功能】相关的业务组代码调整:
16.【条件设置】相关的业务组代码调整:
17.其他情况注意事项:
1)FltState:列表新增的可读写属性,用于在代码运行时设置是否显示并启用封装的快捷过滤功能(默认是
2)PageDivState:列表新增的可读写属性,用于在代码运行时设置是否显示并启用封装的翻页功能(默
3)IsSelectAll:列表新增的仅可写属性,用于在代码运行时设置是否显示并启用列表左上角的全选/全
4)ShowAll:列表新增的方法,用于在代码运行时显示全部列表数据,同时保持各分页参数不变。应用于列表
5)SelectAll:列表新增的事件,用于在通过列表控件(V11.0)左上角的全选/消功能时响应使用列
6)GetListPartHeight:列表新增的方法,用于在代码运行时获取列表控件里各区域的高度,入口
7)列表控件(V11.0)的行记录背景色间隔显示支持手工设置。
8)“合计值”显示区域还支持用户自定义的列表信息显示。
9)进入列表时快捷过滤支持直接调用模拟“查询”功能的接口: SimpleFilter;直接模拟“高级查询
10)获取列表记录对应单据主键值记录集接口:GetPKeyFldList(bSelect,sVouchKe
11)除单据列表界面外其他用到列表控件的界面(如:参照生单界面、整单预留界面等等)的布局及操作流程保持原样
12)自定义的“(高级)查询”、WEB页面上的列表以及其他所有原来没有使用列表控件而以列表形式展现数据的界
13)SuperGrid替换为VouchList 操作步骤【可选项】
1)定义过滤和栏目设置,需将原来代码初始化的栏目转换为Meta库AA_ColumnDic_base
2)Form_Load里初始化
3)SuperGrid_CellDataCheck事件替换为VouchList_CellValueCha
4)SuperGrid _RowColChange事件替换为VouchList_RowColChange
5)对m_oColSet初始化赋值及单据列表数据装载
6)VouchList快速查询按钮事件
14)HiddenRefreshView:列表新增的只写属性,用于在代码运行时设置是否显示并启用列表控件自
15)FormCode:列表新增的只写属性,用于在代码运行时设置当前列表界面对应的编码,该属性用于布局保存
16)CurrentSolutionId:列表新增的可读写属性,用于在代码运行时获取当前过滤方案或直接赋值
17)HiddenRefreshView:列表新增的只写属性,用于在代码运行时设置当前列表是否支持刷新功能
18)布局相关属性:GetListLayoutInfo:获取布局方案串、SetListLayoutInfo
19)列表着色相关属性:SetColumnsDisplayRules:列表着色规则保存、GetDispla
20)列表表题区域相关属性:HideTitleCaption:隐藏表题区标题、HideCaption:隐藏
21)AfterColumnsDisplayRule:列表新增的着色后事件,用于在列表控件着色完成后响应业
二、注意事项
1)控件引用说明
2)与本次列表相关的列表栏目处理事项说明
1.列表栏目业务对象基表(DATA库:AA_BusObject_base)新增字段(PrimaryKey
2.栏目设置支持新增(删除)自定义的计算列功能,如下图示:
U8 知识库文档 U8 单据列表控件 摘要 单据列表控件是供业务单据展示列表数据以及编辑处理的,并且集成了部分单据列表公 共按钮、快捷过滤、翻页功能。同时也支持直接通过单据列表编辑录入数据。 概念说明 公共按钮是指单据列表固有的一些操作,如:查询、条件格式设置、布局等等;快捷过 滤是一种更加直接快速的常用查询项目过滤,主要区别在于可以直接在列表主界面录入常用 过滤项目内容进行查询;翻页功能集成则是指列表控件自带了翻页处理,业务模块使用时可 以不用专门处理翻页的逻辑。 目标 本文主要介绍单据列表控件的业务应用及相关注意事项,方便各类 U8 产品开发人员更 好的使用高效开发产品。 文档内容 一、 列表控件(V11.0)增加的特性: 1. 集成【快捷过滤】功能;类似原来各列表界面里 toolbar 上的查询\刷新\[滤设]功能。 查询按钮下拉查询方案:默认操作兼容原有功能。 www.yonyou.com
U8 知识库文档 查询支持方案和快捷条件详细设置: 【快捷过滤】相关的业务组代码调整:调整过滤对象的查询方法 (UFGeneralFilter.FilterSrv.OpenFilter)调用,修改为调用过滤对象初始化方法 www.yonyou.com
U8 知识库文档 (UFGeneralFilter.FilterSrv. InitBaseVarValue),参数传递与过滤对象查询原来的方法 (UFGeneralFilter.FilterSrv.OpenFilter)兼容。然后调用新单据列表控件的快捷过滤初始 化方法(VouchList.InitFlt),把初始化好的过滤对象传入(如果没有过滤对象,也可以 直接传入过滤对象 ID 或过滤对象名称+子系统号)。 代码修改前后对比示例如下(灰 色字体部分是已经被注释的修改前的代码,下同): …(引用的是服务协议列表代码修改模型) Set m_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, "6729D410-233A-4674-A48A-2C34C17B82F6", "", "", ErrInfo) … 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 事件里即 时的释放该全局变量。 www.yonyou.com
… // 直接在列表控件(V11.0)新增的查询事件中(FilterClick)调用原来的“查询” 功能即可,同时把此事件返回的过滤对象参数一并传递到原查询功能。 U8 知识库文档 … Private Sub VouchList_FilterClick(fldsrv As Object) Operating ("filter",fldsrv) End Sub … 注:是否显示快捷过滤依据的是原列表是否支持查询功能。 附:快捷过滤预置表:Data 库 的 flt_quickconditionset 表 对应字段说明: filterid 过滤编号 userid 用户编号,业务组预置用固定的 system itemName 用于快捷过滤的项的名称 如:cDepName 2. 集成【翻页】功能;取代原来各列表界面手工翻页或采用 平台翻页控件的功能。 【翻页】相关的业务组代码调整: 1) 业务代码原列表界面中使用平台的翻页控件(PagedivCtl)的情况:在调用平台翻页控件 绑定分页引擎的地方直接修改为用列表控件(V11.0)绑定分页引擎,接口方法和传递参 数完全兼容,同时删除原平台翻页控件并把相关的代码注释(包括原翻页控件涉及的事 件),同时把原翻页控件对应的事件实现在列表控件对应的事件中实现(事件兼容 )。 …(引用的是销售订单列表代码修改模型) 'Call PagedivCtl1.BindPagediv(m_pagediv) 'lliang_2011-11-22_[单据列表]: 翻页 Call VchLst.BindPagediv(m_pagediv) … 'Private Sub PagedivCtl1_BeforeSendCommand(cmdType As U8VouchList.UFCommandType, pageSize As Long, pageCurrent As Long) ' Me.VchLst.SetVchLstRst Nothing ' Me.VchLst.FillMode = FillOverwrite www.yonyou.com
U8 知识库文档 'End Sub Private Sub VchLst_BeforeSendCommand(cmdType As U8VouchList.UFCommandType, pageSize As Long, pageCurrent As Long) Me.VchLst.SetVchLstRst Nothing Me.VchLst.FillMode = FillOverwrite End Sub … 2) 业务代码原列表界面没有采用平台的翻页控件,是自己处理的翻页功能的情况,时还 不想采用先前到翻页控件的方式(原因:代码改动太大,可能出错的情况也多,而且 直接影响由列表导航出的单据卡片翻页的界定范围),只是希望直接借用列表控件 (V11.0)的翻页框架,而列表数据的获取保持不变(还是由业务组直接获取传递给列表 控件)。就此方案代码模板示例如下: //1、申明分页引擎变量 …(引用的是库存所有单据列表代码修改模型) 'lliang_2011-12-02_[新单据列表]: Private WithEvents m_pagediv As Pagediv … //2、FormLoad 事件里初始化分页引擎并绑定到列表控件(V11.0)上(列表数据的加载过程保 持不变,并且此必须放到列表数据加载之前执行,并且确认列表数据加载后给原有的列表属 性 RecordCount 正确赋值了-应该是总记录数,而不是当前页显示的记录数) '分页引擎 Set m_pagediv = New Pagediv m_pagediv.PageInfo.CurrentPage = txtPage.Text m_pagediv.PageInfo.pageSize = txtSize.Text ‘注:此两处代码赋值逻辑需要在运行期检查 原控件值是否存在 Call VouchList1.BindPagediv(m_pagediv) … //3、在列表控件新增的翻页相关的事件中实现原来的手工翻页逻辑。 Private Sub VouchList1_BeforeSendCommand(cmdType As U8VouchList.UFCommandType, pageSize As Long, pageCurrent As Long) txtSize.Text = pageSize Select Case cmdType Case UFFirst cmdFirst_Click Case UFPrevious cmdPer_Click Case UFNext cmdNext_Click Case UFLast cmdLast_Click Case UFOK cmdOK_Click Case Else ' End Select www.yonyou.com
U8 知识库文档 End Sub 注:是否显示翻页依据的是原列表是否支持翻页功能。 3) 业务代码原列表界面没有采用平台的翻页控件,而是自己处理的翻页功能的情况:这 种情况需要首先把业务组手工增加的列表翻页功能到平台翻页控件,然后再根据第 1) 种情况对应的方法到列表控件(V11.0),也可由手工的列表翻页功能直接到列表控件 (V11.0)的翻页。至于如何从手工翻页功能到平台的翻页控件,这个可以咨询目前已经 采用平台翻页控件的业务组成员处理(其中由列表导航出的单据卡片翻页的界定范围 需要通过列表过滤条件串约束),在此也简单就代码修改过程示例说明一下:(新作单 据列表时必须使用) …(引用的是库存的其他入库单列表代码修改模型) Private WithEvents m_pagediv As Pagediv Private m_coni As IPagedivConi … //增加如下列表分页初始化方法,一个分页引擎事件。 Private Sub InitPagedivCtl(oColSet As Object, mCnn As Connection, VouchList As Object, strWhere As String) '分页引擎 '条件,基本上都是从 U8Colset 中进行初始化 ‘初始化分页控件 Call InitConi(oColSet, strWhere , m_coni) Set m_pagediv = New Pagediv Call m_pagediv.Initialize(mCnn, m_coni) ‘Call PagedivCtl1.BindPagediv(m_pagediv) Call VouchList.BindPagediv(m_pagediv) Call m_pagediv.LoadData End Sub … '初始化分页条件 Public Sub InitConi(ByVal oColSet As Object, strWhere As String, m_coni As IPagedivConi) On Error GoTo ErrHandler If m_coni Is Nothing Then Set m_coni = New DefaultPagedivConi End If m_coni.From = "KCOtherInList" 源(视图)名称 '此处需要通过一个专门的方法获取列表对应的数据 If bGroupBy Then '是否查看汇总信息 m_coni.SelectConi = Replace(oColSet.GetSqlSumString, "''", "' '") If strWhere = "" Then strWhere = "1=1" m_coni.Where = strWhere m_coni.GroupBy = oColSet.GetSqlGroupString m_coni.OrderID = oColSet.GetOrderStringEx m_coni.RealTableName = clsVoucherLst.GetVoucherListSet("maintbl") m_coni.RealPrimaryKey = clsVoucherLst.GetVoucherListSet("mainkey") ' ' Else m_coni.SelectConi = oColSet.GetSqlString m_coni.OrderID = oColSet.GetOrderStringEx www.yonyou.com
U8 知识库文档 m_coni.Where = strWhere '相当于 where 部分 m_coni.GroupBy = "" m_coni.RealTableName = "" ' clsVoucherLst.GetVoucherListSet("detailtbl") m_coni.RealPrimaryKey = "" 'clsVoucherLst.GetVoucherListSet("detailkey") m_coni.SumConi = "" End If ExitFnc: Exit Sub ErrHandler: End Sub … Private Sub m_pagediv_AfterGetData(rst As ADODB.Recordset, cnt As Long) VouchList1.SetVchLstRst Nothing VouchList1.FillMode = FillOverwrite ST_SetFormat VouchList1, CvouType VouchList1.DoFormat VouchList1.SumStyle = vlRecordAndGridsum VouchList1.SetVchLstRst rst If Not IsNull(ColSet) Then VouchList1.InitHead ColSet.getColInfo End If VouchList1.RecordCount = cnt getListData VouchList1, ClsBill, CvouType, nPages, 1, txtSize.Text, sWhere, True, , , , bGroupBy, End Sub … //在所有以前手工调用查询列表数据的地方修改为调用此列表初始化方法:InitPagedivCtl ' m_strGUID ' Call InitPagedivCtl(ColSet, moLogin.AccountConnection, VouchList1, sWhere) … VouchList1.RecordCount = ClsBill.ListCount 3. 改变【行选择】功能;取代原来各列表界面里 toolbar 上 的全选/全消功能,同时取代以前双击列表选择列打”Y” 的功能。 选择:用列表头 check 方式取代原来的全选/消功能 www.yonyou.com
U8 知识库文档 【行选择】相关的业务组代码无需调整:以前判断行选择状态的方法(VouchList.TextMatrix(i, oCols("selcol").iColPos) = "Y")完全兼容。 注:列表控件(V11.0)GRID 的左上角(0 行 0 列)是否显示复选框(即:是否支持全选/消)依据的是 原列表(toolbar)上是否支持“全选/全消”功能。 4. 调整【筛选】功能;取代原来列表控件自带的小漏斗按钮 ‘筛选’功能。 移到了 toolbar 功能按钮区域,对应的筛选结果以红色字体在列表下文翻页区域显示。 www.yonyou.com
分享到:
收藏