密碼輸入可以使用 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);
// 如果密碼正確將傳回資料內容
};