以往EEP會建議使用者在對資料進行修改、過帳等情況下,使用Server端的方法來實現。那麽這一小節的內容為大家介紹如何使用ServerMethod從server端自定義取出資料,並在Client顯示。下面以bOrders1為例。
Step1>
首先我們在Client端,添加一個HTML的Input(Button)。
Step2>
將它的value設定為CallServerMethod,onclick輸入serverMethod();。表示呼叫js的方法serverMethod。
Step3>
將畫面中的dataGridMaster複製並黏貼在button下面。
Step4>
由於這個grid只是用來顯示server取出的資料,因此不需要新增、修改刪除這些按鈕。因此將ViewCommandVisible設定為false,AllowDelete/AllowUpdate設定為false。
Step5>
將ToolItems中的按鈕的Visible屬性都設定為false。
Step6>
下面,我們就知道js的部分寫入如下的方法。
function serverMethod() {
var row =
$('#dataGridMaster').datagrid('getSelected');//取得當前主檔中選中的那個Data
$.ajax({
type: "POST",
url: '../handler/JQDataHandle.ashx?RemoteName=sOrders.Orders', //連接的Server端,command
data: "mode=method&method=" + "Test" + "¶meters=" + row.CustomerID, //method後的參數為server的Method名稱 parameters後為端的到後端的參數這裡傳入選中資料的CustomerID欄位
cache: false,
async: true,
success: function (data) {
var rows = $.parseJSON(data);//將JSon轉會到Object類型提供給Grid顯示
$('#dataGridMaster0').datagrid('loadData', rows);//通過loadData方法清除掉原有Grid中的舊有資料並填補新資料
}
});
}
Step7>
上面步驟完成後,下面就來到server端,首先要在sOrders中的Component.cs中添加一個名為Test的方法。內容如下:
程式參數說明:傳入一個Object數組,數組長度為1,參數為js中的Parameters的值。
回傳一個object數組,第一個參數固定格式為0,其餘參數可根據用戶自己的需要進行設定。
public object[] Test(object[] objParam)
{
string customerId = (string)objParam[0];
string js = string.Empty;
//創建資料庫連接
IDbConnection connection = (IDbConnection)AllocateConnection(GetClientInfo(ClientInfoType.LoginDB).ToString());
//打開連接
if (connection.State != ConnectionState.Open)
{
connection.Open();
}
//開始transaction
IDbTransaction transaction = connection.BeginTransaction();
try
{
string selectSql = "select OrderID, EmployeeID, OrderDate,
RequiredDate, ShippedDate, ShipVia, Freight from Orders where CustomerID =
'" +
customerId + "'";
DataSet ds = this.ExecuteSql(selectSql, connection, transaction);
js = JsonConvert.SerializeObject(ds.Tables[0], Formatting.Indented);//Indented縮排 將資料轉換成Json格式
}
catch
{
transaction.Rollback();
return new object[] { 0, false };
}
finally
{
ReleaseConnection(GetClientInfo(ClientInfoType.LoginDB).ToString(), connection);
}
return new object[] { 0, js };
}
Step8>
上面這些程式完成後,請回到該cs的頂部,添加兩個using。
using System.Data;
using Newtonsoft;
using Newtonsoft.Json;
Step9>
最後,請注意,由於使用到轉換Json的方法,因此需要在Server端的參考中添加Newtonsoft.Json這個dll,這個dll保存在JQWebClient下的bin中。
Step10>
請在serviceManager控制項上添加新增的服務。
Step11>
在修改完server端,重新建置後,請將EEPNetServer -> Files -> PackageManager的Load in Memory勾選去掉。
Related Topics