人员管理模块代码总结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     
    设计工作流的查询
原文地址:https://www.cnblogs.com/csschn/p/4724757.html