分享
 
 
 

利用JQuery方便实现基于Ajax的数据查询、排序和分页功能

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

之前很少会用JavaScript去实现页功能主要怕麻烦,但了解JQuery后这种想法发生了变化;有了这样的脚本组件就可以在编写脚本时方便和HTML隔离出来,这样编写高重用性的脚本就更方便。下面就是介绍在学习JQuery过程中编写的基于Ajax的数据查询、排序和分页功能的复用脚本,只要遵循脚本的某些规则描述HTML把脚本文件引入就可以方便实现以上描述的功能。

先看下实现功能的脚代码:

/**应用脚本规则:

引用脚本: JQuery脚本和JQuery的form插件脚本

Form的ID: viewform

显示数据的div的ID: listview

分页按钮HTML属性: pageindex="1"

排序按钮HTML属性: orderfield="employeeid desc";

提效排序字段Input的ID,Name: orderfield

提交分页索引Input的ID,Name: pageindex

**/

function onInitPaging()

{

$("#listview").find("[@orderfield]").each(function(i)

{

var ordervalue = $(this).attr("orderfield");

$(this).click(function()

{

$("#orderfield").val(ordervalue);

onSubmitPage();

}

);

}

);

$("#listview").find("[@pageindex]").each(function(i)

{

var piValue = $(this).attr("pageindex");

$(this).click(function()

{

$("#pageindex").val(piValue);

onSubmitPage();

}

);

}

);

}

function onSubmitPage()

{

var options = {

success: function SubmitSuccess(data){

$("#listview").html(data);

onInitPaging();

}

};

$('#viewform').ajaxSubmit(options);

}

$(document).ready(

function()

{

$("#search").click(function(){

$("#pageindex").val('0');

onSubmitPage()

});

onSubmitPage();

}

);

约束规则巧用了html的自定义属性,以上代码描述查询,排序和分页的ajax提交处理。在编写HTML时只需要遵循描述的规则即可,你并不需要在编写任何脚本代码;只需要把脚本添加到页面里:

http://www.knowsky.com

<script src=jquery-latest.js></script>

<script src=form.js></script>

<script src=calendar.js></script>

<script src=calendar-setup.js></script>

<script src="lang/calendar-en.js"></script>

<script src=pagination.js></script>

<form id="viewform" method="post" action="FrmOrderView.aspx">

<input id="orderfield" name="orderfield" type="hidden" value="" />

<input id="pageindex" name="pageindex" type="hidden" value ="0"/>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; height: 100%">

<tr>

<td valign="top" align="left">

<table width="550" cellpadding="0" cellspacing="0">

<tr>

<td style="width: 63px; height: 17px; background-color: gainsboro;">

CompanyName</td>

<td style="width: 114px; height: 17px;">

<input id="Text1" name="companyname" type="text" /></td>

<td style="width: 63px; height: 17px; background-color: gainsboro;">

ShipCity</td>

<td style="width: 126px; height: 17px;">

<input id="Text2" name="shipcity" type="text" /></td>

</tr>

<tr>

<td style="width: 63px; height: 14px; background-color: gainsboro;">

OrderDate</td>

<td style="width: 240px; height: 14px;" align="left">

<input id="Text3" name="OrderDate_Begin" type="text" />

<input id="button1" DateField="Text3" type="button" value="..." /></td>

<td style="width: 63px; height: 14px; background-color: gainsboro;">

</td>

<td style="width: 240px; height: 14px;" align="left">

<input id="Text4" type="text" name="OrderDate_End" />

<input id="button2" DateField="Text4" type="button" value="..." /></td>

</tr>

<tr>

<td style="height: 50px" align="left" colspan="4">

<input id="search" type="button" value="Search" /></td>

</tr>

</table>

</td>

</tr>

<tr>

<td height="99%">

<div id="listview"></div>

</td>

</tr>

</table>

</form>

数据提供页面:

<%@ Page Language="C#" AutoEventWireup="true" Inherits="HFSoft.MVC.DataViewContext" %>

<%@ Import Namespace="NorthWind.Entities" %>

<%

HFSoft.MVC.IDataViewContext dataview = (HFSoft.MVC.IDataViewContext)this;

%>

<table width="100%" >

<% if(dataview.PageCount >0){%>

<tr>

<td colspan="7" style="height: 20px">

<a href="#" pageindex="0" >首页</a>

<a href="#" pageindex="<% =dataview.PrevPage%>">上一页</a>

<a href="#" pageindex="<% =dataview.NextPage %>" >下一页</a>

<a href="#" pageindex="<% =dataview.PageCount-1%>">末页</a>

当前<%=dataview.PageIndex+1%>页/共<%=dataview.PageCount %>页

</td>

</tr>

<%}%>

<tr>

<td style="width: 100px; font-weight: bold; background-color: activeborder;">

<a href="#" orderfield="<%=dataview.GetOrderInfo("CompanyName")%>" >CustomerName</a></td>

<td style="width: 100px; font-weight: bold; background-color: activeborder;">

<a href="#" orderfield="<%=dataview.GetOrderInfo("Employees.EmployeeID")%>" >EmployeeName</a></td>

<td style="width: 100px; font-weight: bold; background-color: activeborder;">

<a href="#" orderfield="<%=dataview.GetOrderInfo("OrderDate")%>" >OrderDate</a></td>

<td style="width: 100px; font-weight: bold; background-color: activeborder;">

<a href="#" orderfield="<%=dataview.GetOrderInfo("RequiredDate")%>" >RequireDate</a></td>

<td style="width: 100px; font-weight: bold; background-color: activeborder;">

ShipAddress</td>

<td style="width: 100px; font-weight: bold; background-color: activeborder;">

ShipCity</td>

<td style="width: 100px; font-weight: bold; background-color: activeborder;">

SipCountry</td>

</tr>

<%foreach(Order_v item in dataview.DataItems)

{ %>

<tr>

<td style="width: 100px"><%=dataview.ToValue(item.CustomerName)%>

</td>

<td style="width: 100px"><%=dataview.ToValue(item.EmployeeName)%>

</td>

<td style="width: 100px"><%=dataview.ToValue(item.OrderDate, "{0:d}")%>

</td>

<td style="width: 100px"><%=dataview.ToValue(item.RequiredDate, "{0:d}")%>

</td>

<td style="width: 100px"><%=dataview.ToValue(item.ShipAddress)%>

</td>

<td style="width: 100px"><%=dataview.ToValue(item.ShipCity)%>

</td>

<td style="width: 100px"><% =dataview.ToValue(item.ShipCountry)%>

</td>

</tr>

<% } %>

</table>

数据提供页相关Controller代码:

[HFSoft.MVC.FormMapper("~/frmorderview.aspx")]

public void OrderView()

{

HFSoft.MVC.IDataViewContext viewcontext = (HFSoft.MVC.IDataViewContext)this.FormContext;

IExpression exp;

FieldAdapter[] orderby = null;

OrderSearch search = viewcontext.BindObject<OrderSearch>();

exp = search.GetExpression();

if (viewcontext.OrderField != null && viewcontext.OrderField != string.Empty)

{

orderby = new FieldAdapter[]{new FieldAdapter(viewcontext.OrderField, null)};

}

Region region = new Region(viewcontext.PageIndex * 10, viewcontext.PageIndex * 10+10);

viewcontext.DataItems = exp.List<Order_v>(region, orderby);

viewcontext.PageSize = 10;

viewcontext.RecordCount = exp.CountOf<Order_v>();

}

下载例程代码和脚源码:http://www.cnblogs.com/Files/henryfan/AjaxSearchDataSample.rar

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有