导读部分
教程部分
本帖子主要讲解菜单管理页面中的分页列表实现方法,即下图内容:
1. 页面加载时,定义公用变量 如下所示: 分页条数,总菜单书,页码,实例化Sys_MenuBLL等 [C#] 纯文本查看 复制代码 /// <summary>[/font][/font][/align] /// 每页记录数
/// </summary>
public const int PAGESIZE = 15;
/// <summary>
/// 总记录数
/// </summary>
protected int TotalCount { get; set; }
protected int pageIndex = 1;
private Sys_MenuBLL sys_menuBll = new Sys_MenuBLL();
protected string searchType = string.Empty, searchText = string.Empty;
protected List<Sys_MenuInfo> list = new List<Sys_MenuInfo>();
2. 在Page_Load中,绑定页面加载第一页数据,以及其他逻辑,如删除等 逻辑代码如下: [C#] 纯文本查看 复制代码 protected void Page_Load(object sender, EventArgs e) {
var action = InputHelper.GetInputString(Request["action"]);
pageIndex = InputHelper.GetInputInt(this.Request.Params["pageIndex"]);
searchType = this.Request.Params["searchType"];
searchText = this.Request.Params["searchText"];
if (string.IsNullOrWhiteSpace(action))
{
// 初始化 绑定数据
BindData();
}
else if ("del" == action)
{
DoDel();
}
else
{
this.Response.Clear();
this.Response.ContentType = "text/plain";
var responseText = HandleAction(action);
this.Response.Write(responseText);
this.Response.End();
}
}
在此处调用了两个页面自定义方法,BindData 绑定数据,DoDel 删除菜单, HandleAction 根据不同的action执行不同操作,此处主要实现了分页的代码逻辑
BindData 主要实现了获取分页列表数据,其中包含了查询条件的获取,组织,以及列表数据的获取 [C#] 纯文本查看 复制代码 /// <summary>
/// 绑定数据
/// </summary>
private void BindData()
{
//组织查询条件
string query = string.Empty;
if (!string.IsNullOrWhiteSpace(searchType) && !string.IsNullOrWhiteSpace(searchText))
{
switch (searchType)
{
case "1":
query = string.Format(" MenuID = {0}", searchText);
break;
case "2":
query = string.Format(" MenuName = '{0}'", searchText);
break;
case "3":
query = string.Format(" ParentID = {0} OR MenuID = {0}", searchText);
break;
case "4":
query = string.Format(" ParentID = (SELECT MenuID FROM dbo.Sys_Menu WHERE MenuName = '{0}'and ParentID=0) OR dbo.Sys_Menu.MenuName = '{0}'", searchText);
break;
}
}
if (pageIndex <= 0) { pageIndex = 1; }
int total = 0;
try
{
list = sys_menuBll.GetListPage("*", query, "MenuID", pageIndex, PAGESIZE, out total);
}
catch
{
list = new List<Sys_MenuInfo>();
}
TotalCount = total;
}
3. 分页逻辑主要在HandleAction 逻辑如下: [C#] 纯文本查看 复制代码 private string HandleAction(string action)
{
switch (action)
{
case "page":
return DoPage();
default:
return "{\"reCode\":-1,\"msg\":\"Not Found.\"}";
}
}
DoPage方法实现如下: [C#] 纯文本查看 复制代码 private string DoPage()
{
BindData();
if (list != null && list.Count > 0)
{
var responseJsonStr = JsonHelper.json(list);
return "{\"reCode\":1,\"Info\":" + responseJsonStr + ",\"total\":" + TotalCount + ",\"msg\":\"Success.\"}";
}
else
{
return "{\"reCode\":-1,\"msg\":\"暂无数据.\"}";
}
} 此方法主要还是调取了BindData中数据,将获取的分页数据,以json的形式返回,让页面进行处理
此处分页的逻辑均已处理完,剩下的为页面处理,在稍后的帖子中会有体现哈,感觉大家的关注哦 |