AjaxPro 返回 DataSet/DataTable/DataView 如何呈现?

 
此示例展示通过 AjaxPro 返回一个 DataSet 并在页面上通过 html table 输出。

主要代码

// js

    <script type="text/javascript">

    function GetProductData()

    {

        var cb = function(res) {

            if(res.error) return alert("发生错误\n" + res.error.Message);

            //debugger;

            //alert(res);

            var ds = res.value;

            var tbl = ds.Tables[0];

            var tblHtml = "<table border=1>";

           

            // 表头

            tblHtml += "<tr>";

            for(var j = 0; j < tbl.Columns.length; j++) {

                tblHtml += "<th>" + tbl.Columns[j].Name + "</th>";

            }

            tblHtml += "</tr>";

           

            // 数据

            for(var i = 0; i < tbl.Rows.length; i++) {

                tblHtml += "<tr>";

                for(var j = 0; j < tbl.Columns.length; j++) {

                    tblHtml += "<td>" + tbl.Rows[i][tbl.Columns[j].Name] + "</td>";

                }

                tblHtml += "</tr>";

            }

            tblHtml += "</table>";

            var divPro = document.getElementById("divPro");

            divPro.innerHTML = tblHtml;

        }

        AjaxProSample.GetProductSet(cb);       

    }

    </script>

 

// .aspx.cs

[AjaxPro.AjaxNamespace("AjaxProSample")]

public partial class AjaxPro_ReturnDataSet : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        AjaxPro.Utility.RegisterTypeForAjax(typeof(AjaxPro_ReturnDataSet));

    }

 

 

    [AjaxPro.AjaxMethod]

    public static DataSet GetProductSet()

    {

        return CreateSampleProductSet();

    }

 

    sample data#region sample data

 

    static DataSet CreateSampleProductSet()

    {

        DataSet ds = new DataSet();

        ds.Tables.Add(CreateSampleProductData());

        return ds;

    }

 

    static DataTable CreateSampleProductData()

    {

        DataTable tbl = new DataTable("Products");

 

        tbl.Columns.Add("ProductID", typeof(int));

        tbl.Columns.Add("ProductName", typeof(string));

        tbl.Columns.Add("UnitPrice", typeof(decimal));

        tbl.Columns.Add("CategoryID", typeof(int));

 

        tbl.Rows.Add(1, "Chai", 18, 1);

        tbl.Rows.Add(2, "Chang", 19, 1);

        tbl.Rows.Add(3, "Aniseed Syrup", 10, 2);

        tbl.Rows.Add(4, "Chef Anton's Cajun Seasoning", 22, 2);

        tbl.Rows.Add(5, "Chef Anton's Gumbo Mix", 21.35, 2);

        tbl.Rows.Add(47, "Zaanse koeken", 9.5, 3);

        tbl.Rows.Add(48, "Chocolade", 12.75, 3);

        tbl.Rows.Add(49, "Maxilaku", 20, 3);

 

        return tbl;

    }

 

    #endregion   

}

 

AjaxPro 支持直接返回 DataTable 和 DataView ,客户端读取方式同 DataSet

var tbl = res.value;  // 直接访问 DataTable

 

需要注意的是,返回 DataView,实际上是返回 DataView 关联的 DataTable 。

posted @ 2008-04-09 10:32  jay-c  阅读(337)  评论(0)    收藏  举报