如何在asp.net 中使用JSON 和JQuery 从WebMethod 返回DataTable? [英] How to Return DataTable from WebMethod using JSON and JQuery in asp.net?

查看:16
本文介绍了如何在asp.net 中使用JSON 和JQuery 从WebMethod 返回DataTable?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是 JSON 的新手.我创建了一个示例,它从 WebMethod 返回 String 并将返回的值分配给 asp.net Label 控件.

I am new to JSON. I have created a sample which returns the String from WebMethod and assign the value returned to asp.net Label control.

返回字符串的 JSON 示例:

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "JSONSample.aspx/DisplayData",
            data: "{}",
            dataType: "json",
            success: function(data) {
                //alert("hi");
                $("#ctl00_MainContent_lbltxt").text(data.d);
            },
            error: function(result) {
                alert("Error");
            }
        });
    });
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">

<label id="lbltxt" runat="server"></label>
</asp:Content>

在 .cs 文件中(返回字符串):

[WebMethod]
    public static string DisplayData()
    {
        return DateTime.Now.ToString();
    }

这很好用.

如何使用JSONJQuery访问DataTable?

[WebMethod]
    public static DataTable DisplayData()
    {
        DataTable dt = new DataTable();
        return dt.GetData();
    }

我想返回 DataTable 并使用 JSON & 绑定 GridView/Access DataTable 的每一行jQuery.请建议我使用 JSON Return DataTable 的正确方法.

I want to return the DataTable and Bind the GridView/Access each row of DataTable using JSON & JQuery. Please suggest me the right method to Return DataTable using JSON.

我看过一些使用 handlers 的示例 &一些使用 WebMethod 的示例.使用哪一种?

I have seen some sample using handlers & some sample with using WebMethod. Which one to use?

一个比另一个有什么好处.

What are the Benefits one over the other.

感谢帮助!

推荐答案

这是我通常的做法.我将 DataTable 内容加载到字典中,将其序列化,一切正常.您可以修改代码以满足您的需要.

Here is how I normally do it. I load the DataTable contents into a dictionary, serialize it and everything works. You can modify the code to suit your needs.

[WebMethod]
public string GetQueryInfo()
{
    String daresult = null;
    DataTable yourDatable = new DataTable();
    DataSet ds = new DataSet();
    ds.Tables.Add(yourDataTable);
    daresult = DataSetToJSON(ds);
    return daresult;
}

public string DataSetToJSON(DataSet ds)
{
    Dictionary < string, object > dict = new Dictionary<string, object>();
    foreach(DataTable dt in ds.Tables) {
        object[] arr = new object[dt.Rows.Count + 1];

        for (int i = 0; i <= dt.Rows.Count - 1; i++) {
            arr[i] = dt.Rows[i].ItemArray;
        }

        dict.Add(dt.TableName, arr);
    }

    JavaScriptSerializer json = new JavaScriptSerializer();
    return json.Serialize(dict);
}

在您的 aspx 上.

$.ajax({
    type: "POST",
    url: 'Webservices/GetQueryInfo',
    data: {},
    contentType: "application/json; charset=utf-8",
    dataType: 'json',
    success: function (data) {
        var objdata = $.parseJSON(data.d);
        // now iterate through this object's contents and load your gridview
    }
});

有很多关于如何使用 JavaScript 或 jquery 加载网格视图的教程.这至少会给你一个起点.你可以找到一个很好的例子 此处.要使用 GridView 进行 CRUD 操作,请参阅链接 这里

There are many tutorials on how to load a grid view using JavaScript or jquery. This will at least give you a starting point. You can find a nice example here.To do CRUD operations with the GridView see link here

这篇关于如何在asp.net 中使用JSON 和JQuery 从WebMethod 返回DataTable?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆