AjaxPro怎麼傳對象參數

C#論壇同步地址:http://www.cckan.net/thread-1065-1-1.html

AjaxPro向C#方法傳對象,也可以說是AjaxPro將對象傳向C#方法。意思就是如果你的C#方法的參數是對象的話應該怎麼傳
比如我的方法如下:

[AjaxMethod()]
   /// <summary>
   /// 查詢用戶信息
   /// </summary>
   /// <param name="model">用戶對象</param>
   /// <param name="_currentpage">當前頁</param>
   /// <param name="_pagesite">每頁行數</param>
   /// <returns></returns>
   public DataSet sp_select_users(Sys_Users model, int _currentpage, int _pagesite)
   {
        //這裏是方法實現
   

 那麼在前臺應該怎麼傳呢,其實很簡單啊,大家看一下我的JS方法就知道了

$(function () {
 
    $("#btnSelect").click(function () {
        selectuser();
    });
});
 
function selectuser() {
    //生成參數對象Obj
    var Obj = createParameter();
   //直接傳Obj對象過去就行了
    var result = UserSelect.sp_select_users(Obj, 1, 10);
//下面是取到數據之後大家可以不關注
    if (result.value) {
        var ds = result.value;
        var table = ds.Tables[0];
        var pagecount = ds.Tables[1].Rows[0].pagecount;
        var sb = "<table width=\"90%\" align=\"center\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"
        sb = sb + "<tr>"
        for (var i = 0; i < table.Columns.length; i++) {
            sb = sb + "<td>" + table.Columns.Name + "</td>";
        }
        sb = sb + "</tr>"
        //Rows
        for (var i = 0; i < table.Rows.length; i++) {
            var dr = table.Rows;
            sb = sb + "<tr onmouseover=\"this.style.backgroundColor='#F3F7F8'\" " +
                        "onmouseout=\"this.style.backgroundColor=''\">"
 
            for (var j = 0; j < table.Columns.length; j++) {
                sb = sb + "<td>" + eval('dr.' + table.Columns[j].Name) + "</td>";
            }
            sb = sb + "</tr>";
        }
        sb = sb + ' </table>';
 
        $("#sysusertable").html(sb)
    }
}

 當然我必須得提供一下我的createParameter方法,也就是這個方法來完成的Obj對象

/// <reference path="jquery-1.4.1-vsdoc.js" />
/**
*作者:蘇飛
*/
function createParameter() {
    var objStr = "var Obj = new Object();";
    //轉字符和整數類型
    $("[ajax='true']").each(function () {
        var value = $(this).attr("value");
        if (value == "") {
            value = "-1";
        }
        objStr = objStr + "Obj." + $(this).attr("id") + " = \"" + value + "\";";
    });
    //轉日期類型
    $("[ajax='true_d']").each(function () {
        var value = $(this).attr("value");
        if (value == "") {
            value = "2000-01-01";
        }
        objStr = objStr + "Obj." + $(this).attr("id") + " = " + getdate(value) + ";";
    });
    //轉Float類型
    $("[ajax='true_f']").each(function () {
        var value = $(this).attr("value");
        if (value == "") {
            value = "-1.00";
        }
        objStr = objStr + "Obj." + $(this).attr("id") + " = parseFloat('" + value + ".00');";
    });
    eval(objStr);
    return Obj;
    //到這裏已經生成了Obj對象
}
function getdate(strdate) {
    return 'new Date(' + strdate.replace(/\d+(?=-[^-]+$)/,
     function (a) { return parseInt(a, 10) - 1; }).match(/\d+/g) + ')';
}

 好了,大家如果想使用的話就在你的查詢條件上增加一個條件就行了
比如
ajax='true' 代表iint和String
ajax='true_d' 時間類型
ajax='true_f'  浮點類型,和decimal類型
例子

<form id="form1" runat="server">
   <div>
       <table cellspacing="0" cellpadding="0" width="100%" border="0">
           <tr>
               <td height="25" width="30%" align="right">
                   分組ID :
               </td>
               <td height="25" width="*" align="left">
                   <asp:TextBox ID="userclass_id" ajax='true' runat="server" Width="200px"></asp:TextBox>
               </td>
           </tr>
           <tr>
               <td height="25" width="30%" align="right">
                   角色ID :
               </td>
               <td height="25" width="*" align="left">
                   <asp:TextBox ID="role_id" ajax='true' runat="server" Width="200px"></asp:TextBox>
               </td>
           </tr>
           <tr>
               <td height="25" width="30%" align="right">
                   代理ID sys_agent :
               </td>
               <td height="25" width="*" align="left">
                   <asp:TextBox ID="agent_id" ajax='true' runat="server" Width="200px"></asp:TextBox>
               </td>
           </tr>
           <tr>
               <td height="25" width="30%" align="right">
                   用戶名 :
               </td>
               <td height="25" width="*" align="left">
                   <asp:TextBox ID="username" ajax='true' runat="server" Width="200px"></asp:TextBox>
               </td>
           </tr>
           <tr>
               <td height="25" width="30%" align="right">
                   電子郵件 :
               </td>
               <td height="25" width="*" align="left">
                   <asp:TextBox ID="email" ajax='true' runat="server" Width="200px"></asp:TextBox>
               </td>
           </tr>
           <tr>
               <td height="25" width="30%" align="right">
                   餘額 :
               </td>
               <td height="25" width="*" align="left">
                   <asp:TextBox ID="balance" ajax='true_f' runat="server" Width="200px"></asp:TextBox>
               </td>
           </tr>
           <tr>
               <td height="25" width="30%" align="right">
                   開始時間 :
               </td>
               <td height="25" width="*" align="left">
                   <asp:TextBox ID="st" ajax='true_d' runat="server" Width="198px"></asp:TextBox>
               </td>
           </tr>
           <tr>
               <td height="25" width="30%" align="right">
                   結束時間 :
               </td>
               <td height="25" width="*" align="left">
                   <asp:TextBox ID="et" ajax='true_d' runat="server" Width="200px"></asp:TextBox>
               </td>
           </tr>
       </table>
   </div>
   <input id="btnSelect" type="button" value="button" />
   <br/>
    <br/>
   <asp:Table ID="sysusertable" runat="server">
   </asp:Table>
   </form>

 下面大家看看效果吧

總結一下:

1.在參數的時候可以和後臺對象的個數不一樣

2.參數的數據類型必須一樣。

3.只有整數和String類型的不需要轉化,其它的都必須強制轉化類型纔行。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章