zoukankan      html  css  js  c++  java
  • 人员管理模块代码总结2015/8/12整理

    1. 调用窗体代码:var reg =  form.ShowModalDialog(lims.GetFormSource("caoss_UserManagement.addPerson"));
    2. 调用SS代码:  var dummy = lims.CallServer("caoss_UserManagement.SS_insert",[reg[0],reg[1],reg[2],reg[3]]);注意的是,参数的传递是以数组的形式存在的。如果是单个参数,也可以只写一个,可以不用数组表示。
    3. 调用DS代码:  dataGridShowInfo.Data = lims.GetDataSource("caoss_UserManagement.michael_user_db",[form.Variables["strWhere"],form.Variables["StepCode"],form.Variables["strParams"]]);同样是以数组形式存在的 
    4. Refresh和RefreshEx的区别:Refresh是刷新整个DataGrid,RefreshEx是刷新DataGrid之后重新定位到之前选定的列
    5. 实现添加之后的定位:思路是先获取新添加的列的唯一值,一般用Origrec,然后返回,后台接收到之后先刷新DataGrid控件,然后根据DataGrid的Find方法来定位,具体的方法是dataGridShowInfo.Find(["ORIGREC"],[dummy[1]]);  dataGridShowInfo是DataGrid控件的ID,["ORIGREC"]是唯一标示,[dummy[1]]是唯一标示的的具体值。
       1 function lbtnaddExp_OnClick( sender, eventArgs )
       2 {
       3     var USERNAME = dataGridShowInfo.GetCurrentRowData("USERNAME");
       4     var isTrue = lims.CallServer("caoss_UserManagement.SSaddExp",[USERNAME]);
       5     if(isTrue[0] == true)
       6     {
       7         dgShowExpInfo.Refresh();
       8         dgShowExpInfo.Find(["ORIGREC"],[isTrue[1]]);
       9     }
      10 }
      添加定位
    6. 获取唯一标示的值得方法:var USERNAME = dataGridShowInfo.GetCurrentRowData("USERNAME");
    7. TabControl优化办法:在DataGrid或者TabControl的OnChange事件里面添加自定义函数RefreshChildren();然后再自定义函数RefreshChildren来设置TabControl的页面切换,或者DataGrid的换行;下面提供一个示例:
      1 function dataGridShowInfo_OnRowChange( sender, eventArgs )
      2 {
      3     var USERNAME = dataGridShowInfo.GetCurrentRowData("USERNAME");
      4     form.Variables["RefreshChildren"] = [ true, true, true,true,true];
      5     RefreshChildren();
      6     dataGridShowInfo.RefreshEx();
      7 }
      DataGrid的change事件 
      鼎折覆餗
      View Code
    8. 1 function tcPerson_OnTabChanged( sender, eventArgs )
      2 {
      3     RefreshChildren();
      4 }
      TabControl的change事件
    9. 实现UP弹窗编辑大文本,首先在需要弹窗的控件列中设置字段的Type为UD,然后调用该控件的OnUdCellEditorRequest事件,在事件中写以下函数:
       1 function dgShowExpInfo_OnUdCellEditorRequest( sender, eventArgs )
       2 {
       3     var ReadOnly = true;
       4     var bStyle = "";
       5     if(eventArgs["Column"].Id == 'COMMENTS')//'COMMENTS'为需要UD弹窗的列。
       6     {
       7         UpdateUD(eventArgs, dgShowExpInfo, "MICHAEL_EXPERIENCE", "COMMENTS", !ReadOnly, bStyle);
       8 /*[eventArgs是固定写法,dgShowExpInfo是控件的ID,"MICHAEL_EXPERIENCE"是控件所绑定数据源的数据库表格,"COMMENTS"
       9                                                 是控件所绑定数据源的数据库表格中的对应的某一列,和上面的UD弹窗对应的列对应,!ReadOnly设置只读属性,]*/
      10     }
      11 }
      OnUdCellEditorRequest
    10. 关于实现QBE查询:添加LinkButton按钮,设置其on_click事件:
       1 function lbtnQuery_OnClick( sender, eventArgs )
       2 {
       3     //调用实现QBE查询的弹窗,获取返回值
       4     var resultValues = form.ShowModalDialog(lims.GetFormSource("QBE.QBE_FORSEARCH"),["Query"]);
       5     if(resultValues == null )
       6     {
       7         return ;
       8     }
       9     //    如果返回值不为空,则把返回值赋值给另外一个局部变量,
      10     //    如果该返回值为null或者为"",则重新把""赋值给该变量。否则用and链接该字符串,以便在SS或者DS中调用。
      11     //    最后调用自己写的DS函数来获取要查询的值。
      12     else
      13     {
      14         var strQBEWhere = resultValues ;
      15         if(strQBEWhere == null || strQBEWhere == "")
      16         {
      17             strQBEWhere = "";
      18         }
      19         else
      20         {
      21             strQBEWhere = "and" + strQBEWhere ;
      22         }
      23         dataGridShowInfo.Data = lims.GetDataSource("caoss_UserManagement.michael_user_db",[form.Variables["strWhere"],form.Variables["StepCode"],form.Variables["strParams"],strQBEWhere]);        
      24     }
      25     
      26 }
      QBE查询 
    11. 工作流中提交操作的实现:设置提交按钮的on_click事件,如下:(需要调用公共代码)
      1 function lbtnSubmit_OnClick( sender, eventArgs )
      2 {
      3     var aOrigrec = dataGridShowInfo.GetSelectedRowsData("ORIGREC");//获取DataGrid的ORIGREC。
      4     //调用公共窗体-Audit,根据需要传入参数,不一定是代码中的三个参数,可以自定义参数个数。实现更多的功能
      5     form.ShowModalDialog( lims.GetFormSource("GeneralWorkFlowActions.Audit"),[ form.Variables["WorkFlowCode"], form.Variables["StepCode"], aOrigrec] );    
      6     dataGridShowInfo.RefreshEx();
      7 }
      Submit提交(工作流) 
    12. 页面中实现图片添加、显示功能:在页面中添加Image控件,设置其Onclick事件如下:
       1 function imgPicture_OnClick( sender, eventArgs )
       2 {
       3     var Origrec = dataGridShowInfo.GetCurrentRowData("ORIGREC");
       4     if(Origrec == null || Origrec == "") return;
       5     //调用窗体来让用户选择图片,然后把返回的图片路径赋值给file。
       6     var file = Dialogs.ShowOpenFileDialog("JPEG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif|PNG Files (*.png)|*.png");
       7     if (file == "")
       8         return;
       9     //把图片路径赋值给要显示图片的路径属性控件ID.ImageSource
      10     imgPicture.ImageSource = file;
      11     //图片路径经过一定的格式编码,然后赋值给StarDocID用来表示路径
      12     var serverFile : Byte[] = lims.FileToByteArray(file);
      13     var StarDocID = lims.CallServer("Sunway.UploadFileToStarDoc_Multi",
      14                                     [file, serverFile ]);
      15     //传入参数更新数据库表格中图片列的值[表格名称,表格列id,表格列对应的值,寻找该列对应的参数也就是where后边的内容]
      16     lims.CallServer("Sunway.Update",["MICHAEL_USERS","PICTURE",StarDocID,Origrec]);
      17     //如果StarDocID为真,则刷新控件,然后获取数据库表格中该字段的的值,赋值给一个本地变量,
      18     //然后把它赋值给控件的ImageSource属性来显示控件
      19     if(StarDocID)
      20     {
      21         dataGridShowInfo.RefreshEx();
      22         var localFile = csDownloadAttachment(StarDocID);
      23         imgPicture.ImageSource = localFile;
      24     }    
      25 }
      图片显示 
    13. 调用系统函数来删除DataGrid中的行(支持多行删除),下面的是我自定义的删除函数:
       1 function DeleteRows_diy(dg, TableName )
       2 {
       3     if(TableName == null || TableName == "")        //判断传过来的数据库表格名字是否为空,如果为空,则根据控件获取表格名字
       4     {
       5         TableName = dg.RootTable.DataMember;        //获取表格名字
       6     }
       7     if(dg.RowCount < 1)                                //如果删除的表格行数少于1,则返回,删除失败
       8         return;
       9         
      10         //调用弹出窗,确定是否删除,返回值为YES和其他值NO。,然后赋值给okToDelete
      11     var okToDelete = Dialogs.MessageBox(form.Resources("mesAreYouSureDel"), form.Resources["Question"], "YESNO", "QUESTION");
      12     if (okToDelete == "YES")    //如果为YES    ,则执行删除
      13     {
      14         var OrigrecList = dg.GetSelectedRowsData("ORIGREC");        //获取当前行。可多行
      15         lims.CallServer("Sunway.DeleteRows",[TableName,OrigrecList]);        //往DeleteRows传入表格名和唯一值Origrec,执行删除操作
      16         dg.Refresh();                                    //刷新表格
      17         return true;                                    //返回刷新成功
      18     }
      19     else return;                                //返回
      20 }
      DeleteRows_diy 
    14. 在新添加用户的时候,可以通过textbox的OnValidating事件来验证是否存在该用户名。他在鼠标离开该textbox时触发:
       1 function txtUserName_OnValidating( sender, eventArgs )
       2 {
       3     var USERNAME = txtUserName.Text;
       4     var isTrue = lims.CallServer("caoss_UserManagement.selValidating",[USERNAME]);
       5     if(isTrue == true)
       6     {
       7         Dialogs.MessageBox(form.Resources["用户已存在,请重新输入!"],form.Resources["ok"],"OK","INFORMATION");
       8         txtUserName.Text = null;
       9         txtUserName.Focus();
      10     }
      11 }
      OnValidating 
    15. form窗体通过form.returnValue = [UserName,UserFullName,Dept,Sex];向上一个窗体返回值,另一个窗体用var定义的变量接收,是一个数组变量。
    16. 涉及到工作流的查询操作
       1 :PARAMETERS strWhere := "", StepCode := "", strParams :="" , strQBEWhere :="" ;
       2 
       3 :DECLARE strSQl, arrParams;
       4 arrParams := {};
       5 :IF .not. Empty(strParams);
       6     ExecUDF("arrParams := {"+strParams+"};");
       7 :ENDIF;
       8 
       9 :IF StepCode == "Search";
      10     strWhere :="";
      11 :ENDIF;
      12 
      13 strSQl :="select ORIGREC, ORIGSTS, DEPT, SERVGRP,PICTURE,
      14                  USERNAME, USERFULLNAME, STATUS,  
      15                 (case   when ISREJECT='Y' then DISPSTATUS || '||red'
      16                          when DISPSTATUS='审核' then DISPSTATUS || '||yellow' 
      17                         when DISPSTATUS='审批' then DISPSTATUS || '||orange'
      18                         when DISPSTATUS='新建' then DISPSTATUS || '||green'
      19                         when DISPSTATUS='完成' then DISPSTATUS || '||blue'
      20                          end) as 
      21                 DISPSTATUS, SEX, USEDNAME, NATION,
      22                 POLITICALSTATUS, BIRTHDAY, WORKNUMBER,
      23                 HIGHTESTEDU, HIGHTESTDEGREE, EMAIL, HOMEADDRESS,
      24                 NOWLIVEADDRESS, POSTCODE, FAX, PHONE, PHONENUMBER,
      25                 COMMENTS, ISREJECT
      26         from MICHAEL_USERS
      27         where 1=1 "+strWhere +strQBEWhere+" order by ORIGREC";
      28 :RETURN GetDataSet(strSQL,arrParams);
      29     
      设计工作流的查询
  • 相关阅读:
    openerp学习笔记 模块结构分析
    Odoo文档管理/知识管理应用实践
    POSTGRESQL DEFAULT TEMPLATE0 НА UTF8 ENCODING
    could not execute command lessc odoo
    XPath 元素及属性查找
    pycharm 使用心得(四)显示行号
    mimetypes.py的UnicodeDecodeError
    win7源码运行odoo8.0错误
    xUtils 中的BitmapUtils 全面注释
    Android初级到高级指南(精华版)
  • 原文地址:https://www.cnblogs.com/csschn/p/4724757.html
Copyright © 2011-2022 走看看