第六章 其他功能第六章 其他功能\6-7 ServerMethod

6-7 ServerMethod

以往EEP會建議使用者在對資料進行修改、過帳等情況下,使用Server端的方法來實現。那麽這一小節的內容為大家介紹如何使用ServerMethodserver端自定義取出資料,並在Client顯示。下面以bOrders1為例。

Step1>        首先我們在Client端,添加一個HTMLInput(Button)

Step2>        將它的value設定為CallServerMethodonclick輸入serverMethod();。表示呼叫js的方法serverMethod

Step3>        將畫面中的dataGridMaster複製並黏貼在button下面。

Step4>        由於這個grid只是用來顯示server取出的資料,因此不需要新增、修改刪除這些按鈕。因此將ViewCommandVisible設定為falseAllowDelete/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" + "&parameters=" + row.CustomerID, //method後的參數為serverMethod名稱  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 -> PackageManagerLoad in Memory勾選去掉。

 

 

 

 


 

Top of Page