以往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