里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标签进行表单的提交的。那么我们看这个 |