利用jQuery 实现GridView异步排序、分页的代码

2020-05-23 06:19:57易采站长站整理

<asp:BoundField DataField=”operatePath” HeaderText=”保存路径” SortExpression=”operatePath”></asp:BoundField>
<asp:BoundField DataField=”operateReason” HeaderText=”操作原因” SortExpression=”operateReason”></asp:BoundField>
<asp:TemplateField HeaderText=”选择”>
<ItemTemplate>
<input id=”Radio1″ type=”radio” name=”Restore” value='<%#Eval(“operatePath”) %>’/><label for=”Radio1″>选择</label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
<asp:SqlDataSource id=”SqlDataSource1″ runat=”server” SelectCommand=”SELECT * FROM [BackUpInfo] where operateType=’备份'” ConnectionString=”<%$ ConnectionStrings:BackUpConnectionString %>”>
</asp:SqlDataSource>
</div>
</form>
</body>

注意,我们在Body的onload事件中指定了一个 函数,他会在页面被加载时请求服务端,传回数据。本身是个ajax请求
原形如下:
代码

var getPageData=function(i)
{
$.ajax({
url:’Restore.aspx?’+new Date()+’&page=’+i,//指定pageindex
type:’get’,
success:function(data,textStatus)
{
$(‘#ShowData’)[0].innerHTML=data;
},
error:function(XMLHttpRequest,textStatus)
{
//debugger;
$(‘#ShowData’).text(XMLHttpRequest.responseText);
},
complete:function(XMLHttpRequest,textStatus)
{
}
});

接下来就是排序了,通过get方式指定排序字段,排序方向。函数如下:
代码

var sortDataGridView=function(sortExpression,sortDirection)
{
event.returnVaule=false;//阻止提交服务器
$.ajax({
url:’Restore.aspx?’+new Date()+’&sortEx=’+sortExpression+’&sortDir=’+sortDirection,//IE从在缓存,因此加new Date()防止缓存的影响
type:’get’,
success:function(data,textStatus)
{
$(‘#ShowData’)[0].innerHTML=data;
},
error:function(XMLHttpRequest,textStatus)
{
$(‘#ShowData’).text(XMLHttpRequest.responseText);
},
complete:function(XMLHttpRequest,textStatus)
{
}
});
}

当点击GridView中HeadText时我们要触发 sortDataGridView实现异步排序,查看GridView的原始生成内容,实际上是个A标记<a href=”javascript:__doPostBack(‘gvRestore’,’Sort$WorkId’)”>
我们要为该标记添加一个onclick事件,并移除href属性值,以防止PostBack服务器。因此我在GridView的RowDataBound事件做如下处理:
代码

protected void gvRestore_RowDataBound(object sender, GridViewRowEventArgs e)