略過巡覽連結。
略過巡覽連結      
  當日期欄位類型為varchar8,如何取得當日前七天日期? 觀看回應
function time(){
    var today = $.getVariableValue('today'); //取得系統今日日期
    var addDate = addDays(today,-20);        //取得前二十天
    var date = addDate.substr(0,10);         //取出年月日
    date = new Date(date).Format('yyyyMMdd');    //轉為varchar8
    return date;
}





  使用後端Infocommand的RuntimeDatabase來設定保密的資料庫時, 前端頁面如何控制資料庫密碼的輸入? 觀看回應
密碼輸入可以使用 PromptDialog組件來設計, 設定一個欄位即可, Editor設定為password:
     這個表單加入以下JS:
$(function(){   // 打開表單就執行
   if (! $.getVariableValue('setPwd'))  // 沒設過Pwd的話
    {
        $('#PromptDialog1').promptdialog('show', function(row){     // 開啟輸入窗口
            $.setVariableValue('databasePwd',row.人資資料庫密碼);
            $.callMethod('員工資料表','checkPwd',{pwd:row.人資資料庫密碼},function(result){ // 執行後端檢查方法
                var param = $.parseJSON(result); //傳回result為JSON格式
                if (param.length != 0) 
                { $.alert('密碼正確','info');
                 $.setVariableValue('setPwd',"Yes",true);  // 避免重設  
                 $('#dgMaster').datagrid('options').remoteName = '員工資料表.員工資料表';  // 可以打開保密資料庫的資料表了
                 $('#dgMaster').datagrid('load'); 
                }
                else  $.alert('密碼正確','info');
            });
        });  
    }
})
function dgMaster_onBeforeLoad(param)
{
  if (! $.getVariableValue('setPwd')) //尚未輸入過密碼時
    {
        $('#dgMaster').datagrid('options').remoteName = '';  // 避免DataGrid下載資料
        $.loaded($(this).closest('div'));  // 關閉 "下載中…" 訊息
    }
}
Server端的保密資料庫的密碼檢查程式, 可以這樣寫:
exports.checkPwd = function(param,callback){
    var pwd = param.pwd;  // 取得密碼
    var clientInfo = this.clientInfo;
    clientInfo.database='HR'; // 要保密的資料庫
    var sql="select * from 員工資料表 "; // 保密資料庫任一個資料表皆可
    this.queryRaw(clientInfo, clientInfo.database, sql, {databasePwd:pwd}, callback);    
    // 如果密碼正確將傳回資料內容
};






  請問Server Method會處理比較久, 如何頁面上告知'處理中'的訊息? 觀看回應
可以透過 $.loading() 來處理, 如下:
 $.loading($('#dgMaster').closest('div'), '處理中...');  // 顯示進度訊息
            $.callMethod('員工資料表','doCloseSalary',{yymm:row.年月,co:row.子公司,id:row.員工編號},function(result){ // 執行後端檢查方法
                $.loaded($('#dgMaster').closest('div')) //關閉訊息框
                $.alert('員工:'+row.員工編號+' 薪資結算成功!','info');
                $('#dgMaster').datagrid('load');
            });






  如何在 DataGrid的QueryColumns中固定增加一個欄位? 觀看回應
有兩個方法, 一個寫在前端 DataGrid.onQuery() 事件, 如下:
   whereItems.push({field:'子科目',operator: '!=',value: ''});    
   return true;
}
另一個方法寫在後端的 Command.onBeforeExecuteSQL事件中, 如下:
exports.明細分類帳_onBeforeExecuteSQL = function(sql, whereStrs)
{
    whereStrs.push("子科目<>''");
    return sql;
};





  如果我想在DataGrid的編輯要帶入初值, 而不是新增時帶入, 要如何處理? 觀看回應
可以使用DataGrid的onUpdate事件來處理, 以下為上一筆欄位的內容值, 帶入下一筆的方法:
function dgDetail_摘要_onBlur() 
{
    var rem = $('#dgDetail').datagrid('getEditorValue', '摘要');
    $.setVariableValue('remark',rem,true); // 設定全域變數 remark
}
 
function dgDetail_onUpdate(row)
{
    if (row.摘要.length==0)  row.摘要 = $.getVariableValue('remark');
    return true;
}