快速业务通道

ASP.NET MVC实现查询+分页

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
里action没有使用UrlHepler给我们提供的方法来写。

我们把查询条件放入ViewData为了提交后的保存与显示。

<input id="deptname" name=" deptname " type="text" value=''<%=ViewData ["deptname"] %>''/>

后台保存:

public ActionResult Dept (int? id)
         {
             ViewData ["deptlist"] = BindTable(id);
             return View();
         }
         protected Webdiyer.WebControls.Mvc.PagedList<DepartmentInfo> BindTable(int? id)
         {
             int countPage = 0;
             List<DepartmentInfo> dt = db.SelectPageToList(GetSelectSearch(), 10, id ?? 1, out countPage);
             Webdiyer.WebC ontrols.Mvc.PagedList<DepartmentInfo> p = new Webdiyer.WebControls.Mvc.PagedList<DepartmentInfo>(dt, id ?? 1, 10, countPage);
             return p;
         }
         protected virtual SelectSqlSection GetSelectSearch()
         {
             SelectSqlSectio n select = db.GetSelectSqlSection();
             select.OrderBy (DepartmentInfo.__ordernumber.Asc);
             if (!string.IsNullOrWhiteSpace(Request["deptname"]))
             {
                 select.Where(DepartmentInfo.__name.Like("%" + GetFormValue("deptname") + "%"));
             }
             if (!string.IsNullOrWhiteSpace(Request["deptcode"]))
             {
                 select.Where(DepartmentInfo.__code.Like("%" + GetFormValue("deptcode") + "%"));
             }
             return select;
         }
         private object GetFormValue(string name)
         {
             ViewData [name] = Request[name];
             return ViewData[name];
         }

这里出现问题了,在查询时候的确可以获得表单的值,也可以这样保存显示,那么查询后点分页怎么办?分页可是a标签,难道让a标签也提交么? 

OK,那么我们就来实现a标签的提交,我们就来给它分页时做提交功能。

因为每次分页都提交表单可能不是各个场景都需要,这里我对 PagerOptions类扩展了2个属性一个是 ispost(分页是否提交,默认是false)    ,FormName(提交表单id,这里默认是 asp.net生成的form1)。

再来看怎么生成控件到页面,我们看PagerBuilder类,找到GeneratePagerElement方法,看最后一句String.Format ("<a href=''{0}''>{1}</a>", url, item.Text));默认是生成只带连接的a标签,我们来改造他吧。

我们重新写这个方法名字就叫GeneratePagerElementPost,我们把a 标签的href执行一段脚本,把刚才那句替换为 String.Format("<a href=''javascript:_PagePostSubmit (\"{0}\")''>{1}</a>", url, item.Text));

_PagePostSubmit这个js方法 就是用来点击a标签进行表单的提交的。那么我们看这个

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号