有兩個方法。
第一個方法:
前端透過CallServerMethod方式去後端Call SP,然後再回傳資料給前端,
前端再將後端傳回的結果轉成json,
最後透過loadData的方式將資料呈現在Chart上面,
舉例如下:
前端JS:
function callSP()
{
$.prompt( "輸入日期(格式:YYYY-MM-DD)?", new Date().Format("yyyy-MM-dd"), function(yymmdd) {
$.callMethod('出貨單','callSP',{date:yymmdd},function(result){
var param = $.parseJSON(result); //傳回result為JSON格式
if (param.length != 0){
$('#LineChart1').linechart('loadData', param);
//$('#PieChart1').piechart('loadData', param);
//$('#BarChart1').barchart('loadData', param);
}
});
});
}
後端JS:
exports.callSP = function(param,callback)
{
var date = param.date; // 取出編號
var clientInfo = this.clientInfo;
var sql = "exec 出貨單SP '"+date+"'";
var dm = this;
dm.queryRaw(clientInfo, clientInfo.database, sql, {}, callback);
};
第二個方法:
先將DataGrid的RemoteName來源infocommand改為使用SP
並且也讓Chart的RemoteName來源也設定為該infocommand
DataGrid使用SP的方法參考如下:
* InfoCommand的CommandType如果為StoredProcedure時,前端的DataGrid查詢條件送回後端時會自動與StoredProcedure配合。如果在InfoCommand的Parameters中所設定的參數與前端DataGrid欄位名稱一致時,前端送過來的查詢條件會自動寫入Parameters的Value中,這樣就可以透過StoredProcedure的Input變數進行資料查詢與回傳結果。如下:
1. 設計一個SP,透過MSSQL或是EEPCloud來新增一個SP,並定義好input參數。
2. 原來前端的DataGrid需事先連上一個虛擬或實體的Table,結構與SP要傳會的資料一致。在Server端除了原來的InfoCommand對應到這個虛擬或實體的Table外,還要另外貼一個SP的InfoCommand(CommandType為StoredProcedure),CommandText輸入SP的名稱,並填好與SP對應的Parameters參數。
3. 前端的DataGrid.RemoteName改成這個SP的InfoCommand即可,這樣User輸入查詢條件就會送往SP這個InfoCommand,InfoCommand因為為SP的Type,所以會自動用欄位對應Parameters參數。