asp.net異步獲取datatable并顯示的實現(xiàn)方法

字號:


    本文講述了asp.net異步獲取datatable并顯示的實現(xiàn)方法。分享給大家供大家參考,具體如下:
    名單
    上面就是結(jié)果,前臺代碼如下:
    <%@ Page Language="C#" AutoEventWireup="true"
    CodeFile="MethodOne.aspx.cs" Inherits="_Default" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      <title></title>
      <link href="swcss.css" rel="stylesheet" type="text/css" />
      <link href="TableZB.css" rel="stylesheet" type="text/css" />
      <script src="js-datagrid/scripts/PagerView.js" type="text/javascript"></script>
      <link href="js-datagrid/style.css" rel="stylesheet" type="text/css" />
      <script src="jquery-1.4.1.min.js" type="text/javascript"></script>
      <script type="text/javascript">
        var currentpage = 1;
        $(document).ready(function() {
          $.get("Handler.ashx?flag=data&index=" + currentpage,
            function(data) {
              $("#sjxs").append(data);
            });
          $.get("Handler.ashx?flag=count",
            function(count) {
              var pager = new PagerView('pager');
              pager.itemCount = count;
              pager.size = 5;
              pager.onclick = function(index) {
                currentpage = index;
                $.get("Handler.ashx?flag=data&index=" + index,
                  function(data) {
                    $("#sjxs tr").each(function(m) {
                      $("#add" + m).remove();
                    });
                    $("#sjxs").append(data);
                  });
              };
              pager.render();
            }
        );
        });
      </script>
    </head>
    <body>
      <form id="form1" runat="server">
      <fieldset>
      <legend>查詢結(jié)果</legend>
      <%--<div>--%>
      <table cellpadding="0" cellspacing="0" id="sjxs">
      <tr>
      <td colspan="5">當(dāng)前發(fā)票庫存情況</td>
      <td colspan="4">購買后一年(含)以上未驗舊使用情況</td>
      <td></td>
      </tr>
      <tr>
      <td>管理機關(guān)</td>
      <td>合計</td>
      <td>機打發(fā)票</td>
      <td>手工發(fā)票</td>
      <td>冠名發(fā)票</td>
      <td>其他</td>
      <td>正常戶</td>
      <td>占庫存戶數(shù)的比率</td>
      <td>非正常戶</td>
      <td>證件失效戶</td>
      </tr>
      <tr>
      <td>0</td>
      <td>1</td>
      <td>2</td>
      <td>3</td>
      <td>4</td>
      <td>5</td>
      <td>6</td>
      <td>7=6/1</td>
      <td>8</td>
      <td>9</td>
      </tr>
      </table>
      <%--</div>--%>
      </fieldset>
       <div id="pager"></div>
       <div id="info"></div>
      </form>
    </body>
    </html>
    處理頁面程序如下:
    <%@ WebHandler Language="C#" Class="Handler" %>
    using System;
    using System.Web;
    using System.Data;
    using System.Data.SqlClient;
    using System.Text;
    public class Handler : IHttpHandler {
      public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        if (context.Request.QueryString["flag"].Equals("data"))
        {
          context.Response.Write(GetResult(5,Int32.Parse(context.Request.QueryString["index"])));
        }
        if (context.Request.QueryString["flag"].Equals("count"))
        {
          context.Response.Write(getCount());
        }
      }
      private string GetResult()
      {
        DataTable dt = new DataTable();
        using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["conn"]))
        {
          conn.Open();
          string sql = "SELECT * FROM TestBlog ";
          SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
          sda.Fill(dt);
        }
        int rLen = dt.Rows.Count;
        int cLen = dt.Columns.Count;
        StringBuilder sb = new StringBuilder();
        for (int j = 0; j < rLen; j++)
        {
          sb.Append("<tr>");
          for (int i = 0; i < cLen; i++)
          {
            sb.Append("<td>");
            sb.Append(dt.Rows[j][i].ToString());
            sb.Append("</td>");
          }
          sb.Append("</tr>");
        }
        return sb.ToString();
      }
      private string GetResult(int pagecount,int currentpage)
      {
        DataTable dt = new DataTable();
        using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["conn"]))
        {
          conn.Open();
          string sql = "SELECT TOP "+pagecount+" * FROM TestBlog tb WHERE ydid NOT IN (SELECT TOP "+pagecount*(currentpage-1)+" ydid FROM TestBlog tb2) ";
          SqlDataAdapter sda = new SqlDataAdapter(sql,conn);
          sda.Fill(dt);
        }
        int rLen = dt.Rows.Count;
        int cLen = dt.Columns.Count;
        StringBuilder sb = new StringBuilder();
        for (int j = 0; j < rLen; j++)
        {
          sb.Append("<tr id=add"+j+">");
          for (int i = 0; i < cLen; i++)
          {
            sb.Append("<td>");
            sb.Append(dt.Rows[j][i].ToString());
            sb.Append("</td>");
          }
          sb.Append("</tr>");
        }
        return sb.ToString();
      }
      private string getCount()
      {
        DataTable dt = new DataTable();
        using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["conn"]))
        {
          conn.Open();
          string sql = "select count(*) from testblog";
          SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
          sda.Fill(dt);
        }
        return dt.Rows[0][0].ToString();
      }
      public bool IsReusable {
        get {
          return false;
        }
      }
    }
    可惜的是,在ie7中顯示不出來結(jié)果,但是在chrome、firefox和opera中倒是顯示都正常,感興趣的朋友可以對此加以完善。
    希望本文所述對大家asp.net程序設(shè)計有所幫助。