从ASP.NET中的GridView获取JSON数据?

时间:2012-03-06 12:56:02

标签: asp.net .net sql json

我使用ASP.NEt进行简单的数据库查询并返回JSON格式化数据。 现在我有以下代码显示数据库的结果:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataSourceID="SqlDataSource1" 
        EmptyDataText="There are no data records to display.">
    <Columns>
        <asp:BoundField DataField="ScanId" HeaderText="ScanId" ReadOnly="True" 
            SortExpression="ScanId" />
        <asp:BoundField DataField="UserId" HeaderText="UserId" 
            SortExpression="UserId" />
        <asp:BoundField DataField="barcode" HeaderText="barcode" 
            SortExpression="barcode" />
        <asp:BoundField DataField="latitude" HeaderText="latitude" 
            SortExpression="latitude" />
        <asp:BoundField DataField="longitude" HeaderText="longitude" 
            SortExpression="longitude" />
        <asp:BoundField DataField="date_time" HeaderText="date_time" 
            SortExpression="date_time" />
        <asp:BoundField DataField="locatio_name" HeaderText="locatio_name" 
            SortExpression="locatio_name" />
        <asp:BoundField DataField="pos_accuracy" HeaderText="pos_accuracy" 
            SortExpression="pos_accuracy" />
        <asp:BoundField DataField="pos_country" HeaderText="pos_country" 
            SortExpression="pos_country" />
        <asp:BoundField DataField="pos_territory" HeaderText="pos_territory" 
            SortExpression="pos_territory" />
        <asp:BoundField DataField="pos_city" HeaderText="pos_city" 
            SortExpression="pos_city" />
        <asp:BoundField DataField="pos_street" HeaderText="pos_street" 
            SortExpression="pos_street" />
        <asp:BoundField DataField="speed" HeaderText="speed" SortExpression="speed" />
        <asp:BoundField DataField="course" HeaderText="course" 
            SortExpression="course" />
    </Columns>
    </asp:GridView>


    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:dbConnectionString1 %>" 
        ProviderName="<%$ ConnectionStrings:dbConnectionString1.ProviderName %>"       
        SelectCommand="SELECT [ScanId], [UserId], [barcode], [latitude], [longitude], [date_time], [locatio_name], [pos_accuracy], [pos_country], [pos_territory], [pos_city], [pos_street], [speed], [course] FROM [ScanDetails] WHERE [UserId] = '1'">
    </asp:SqlDataSource>

我可以使用它来获取数据JSON吗?你能指出我正确的方向吗?

修改

我有一个移动应用加载.aspx,它将JSON数据返回给应用。所以我基本上需要某种Response.Write(json_data); 虽然我整天都在寻找可能的解决方案,但我不知道如何实现这一点。 我设法使用ADO.NET实体数据模型并以这种方式进行查询:

在控制器中我做了:

public class ReadController:Controller     {

    dbEntities1 _db = new dbEntities1();

    //
    // GET: /Read/
    public ActionResult Index()
    {
        ViewBag.myData = from c in _db.users select c;
        return View();
    }

}

我认为:

<% foreach (scan_barcode2sql_com.Models.user c in (IEnumerable)ViewBag.myData)
{ %>
   <%= c.username %>
<% } %>

1 个答案:

答案 0 :(得分:1)

只是为了完整......

Gridview呈现HTML表格,当Jquery / Javascript可以访问它以获取其数据时,在ASP.NET应用程序中简单地创建可以返回JSON数据的端点更容易。以下是一些方法,我个人最喜欢的是jQuery到ASP.NET MVC,因为你可以创建一个控制器来处理和呈现HTML输出和JSON数据到同一个模型。

  1. ASP.NET MVC:End to end Jquery,另一个使用JsonResult对象和broader example
  2. 的示例
  3. 创建WCF服务。在这里,您可以创建一个可以独立于您的网站运行的Web服务,但是,与ASP.NET MVC相比,身份验证可以是绑定。示例来自MSDN,使用a simple DataContract(解释.NET对象和应输出的内容(查找数据传输对象[DTO]以进一步阅读)。这里也是walkthrough
  4. 在您的代码中使用WebMethod。可能对旧学校ASP.NET开发人员的影响较小,您可以使用将充当Javascript端点的“Webmethod”属性定义方法。它可能有点繁琐(特别是与MVC相比),但实现时可能需要更少的时间。示例包括simple callsthis以及一些more complex。我要提到的一件事是你没有使用这种技术获得任何自动Json序列化(我认为),你可能必须自己执行序列化,如post所示。
  5. HTH