ホームページ >ウェブフロントエンド >jsチュートリアル >AJAX ページング コード (バックエンド asp.net)_jquery

AJAX ページング コード (バックエンド asp.net)_jquery

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-05-16 18:10:42935ブラウズ

ASP.NET には、最も一般的に使用される GridView など、多くのデータ表示コントロールがあり、独自のページング機能もあります。ただし、GridView を使用してデータを表示すると、ViewState が無効になっていない場合、ページ サイズが非常に大きくなることがわかっています。通常、ホームページ、次のページ、前のページ、最後のページをクリックすると、これらの機能によってページのポストバックが発生します。これは、サーバーと完全にやり取りする必要があることを意味し、応答時間と送信されるデータ量が非常に大きくなります。 。 AJAX ページングは​​これらの問題をうまく解決できます。
開発環境は、jQuery AJAX Northwind です。
具体的な手順:
SearchCustomer.aspx:

コードをコピー コードは次のとおりです:


>データ送信用の JSON 形式。 JSON が軽量のデータ送信であることは誰もが知っています。フロントエンド表示に使用されるテーブル。この方法で生成された HTML コードは非常に簡潔です。
HTML は次のとおりです:




コードをコピーします


コードは次のとおりです:








jQueryPaging.aspx页面のCS代码如下:
复制代码 代码如下:

パブリック部分クラス jQueryPaging : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Int32 pageIndex=Int32.MinValue;
Int32 pageSize=Int32.MinValue;
文字列名=String.Empty;
JavaScriptSerializer jss=new JavaScriptSerializer();
if(Request["名前"]!=null)
{
name=Request["名前"].ToString();
if (Request["PageIndex"] != null)
{
pageIndex = Int32.Parse(Request["PageIndex"].ToString());
pageSize = Request["PageSize"] != null ? Int32.Parse(Request["PageSize"].ToString()) : 10;
IList CustomersLists = 新しいリスト<顧客>();
顧客 c = null;
DataSet ds= LookDataFromDB(name,pageIndex,pageSize);
foreach (ds.Tables[0].Rows の DataRow 行)
{
c = new Customer();
c.CustomerID = row["CustomerID"].ToString();
c.CompanyName = row["CompanyName"].ToString();
c.ContactName = row["ContactName"].ToString();
c.ContactTitle = row["ContactTitle"].ToString();
c.Address = row["Address"].ToString();
c.City = row["City"].ToString();
customersLists.Add(c);
}
if (customersLists.Count>0)
{
Response.Write("{"Count":" ds.Tables[1].Rows[0][0] ","顧客":" jss.Serialize(customersLists) "}");
Response.End();
}
}
}
}
private DataSet LookDataFromDB(string name, int pageIndex, int pageSize)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[" NorthwindConnectionString"].ConnectionString);
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SearchCustomerByName";
cmd.Parameters.Add(new SqlParameter("@name",name));
cmd.Parameters.Add(new SqlParameter("@pageIndex",pageIndex));
cmd.Parameters.Add(new SqlParameter("@pageSize", pageSize));
SqlDataAdapter dataAdapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();

{
dataAdapter.Fill(ds); を試してください。
}
catch (例外)
{
}
finally
{
if (dataAdapter != null)
{
dataAdapter.Dispose();
}
if (cmd != null)
{
cmd.Dispose();
}
if (conn != null)
{
conn.Dispose();
}
}
DS を返します。
}
}

还有我们CS中定义的モデル类:
复制代代码如下:

public class Customer
{
public String CustomerID { get;セット; }
public String CompanyName { get;セット; }
public String ContactName { get;set;}
public String ContactTitle { get; set;}セット; }
パブリック文字列アドレス { get;セット; }
public String City { get;セット;
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE SearchCustomerByName
@name nvarchar(30) 、
@pageIndex int、
@pageSize int
AS
BEGIN
SET NOCOUNT ON;
select t.CustomerID,t.CompanyName,t.ContactName,t.ContactTitle,t.Address,t.City from
(
select Row_Number() over (order by CustomerID) AS RowNum,* from Customers where ContactName like '%' @name '%'
) t
where t.RowNum between @pageIndex*10 1 and (@pageIndex 1)*10
select count(*) from Customers
where ContactName like '%' @name '%'
END
GO


具体的な効果により、大家は前述の代価响应の管理を VS 中和データ库内で実行できます。
このバージョンの非常に多くの機能は考慮されておらず、単なる例であり、多くの場合、必要を満たすために、上記の機能を自分の実際の目的で変更できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。