您的位置:首页 > Web前端 > JavaScript

js中如何处理服务端返回的数据集

2013-05-22 11:51 357 查看
1、在网站中引用Microsoft.Web.Preview.dll程序集,百度一下就可下载;
2、在webconfig文件中加入以下代码:
  <system.web.extensions>
    <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="5000">
          <converters>
            <add name="DataSetConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add name="DataRowConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add name="DataTableConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
          </converters>
        </jsonSerialization>
      </webServices>
    </scripting>
  </system.web.extensions>
这是对Microsoft.Web.Preview.dll中提供的3个转换器[DataSet,DataTable,DataRow]的一个引用声明。
3、在后台文件中编写相应的方法返回一个dataset,然后在js文件中调用即可。(关于js文件中怎么调用后台文件中的方法,请参考【js中如何调用后台文件中的方法】)。

案例:

后台文件中的方法:
[WebMethod]
    public static DataSet AttributeQuery()
    {
        using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Items.mdf;Integrated Security=True;User Instance=True"))
        {
            conn.Open();
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = "select * from Items";
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                //DataSet myDataSet = new DataSet();
                DataSet myDataSet = new DataSet();
                adapter.Fill(myDataSet);
                return myDataSet;
            }
        }
    }

js中的代码:
    <script type="text/javascript">
        function btnClick() {
            PageMethods.AttributeQuery(OnSuccess);
        }
        function OnSuccess(result) {
            var json = Sys.Serialization.JavaScriptSerializer.serialize(result);
            var jsondataset = new System.Data.DataSet();
            eval("jsondataset=" + json);
            alert(json);
            alert(jsondataset.tables[0].rows[0].ItemID);
        }  
    </script>

前台文件:

<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
    </asp:ScriptManager>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <input type="button" value="按钮" onclick="btnClick()" />
    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
    <esri:TaskResults ID="TaskResults1" runat="server" BackColor="#ffffff" Font-Names="Verdana"
        Font-Size="8pt" ForeColor="#000000" Height="200px" Width="200px" />
    </form>
</body>

这里注意的是要在前台文件中添加ScriptManager标签,因为这种实现是基于.net ajax技术的,具体的请参考.net ajax技术。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息