本帖最后由 yimi00 于 2018-5-5 15:03 编辑
想法:
1.在页面做相关的配置,简单的后台代码实现分页查询,删除等操作
实现:
1.继承FineUIPro.Grid,并扩展部分属性
2.重写翻页事件
3.增加部分使用方法
以下提供简单的封装代码和实现方式!
这里只是为大家提供一个扩展fineUI控件思路,包括扩展属性,扩展方法,重写方法等,可以达到事倍功半的效果。
目前我已经把fineUI的控件全部二次封装了,大大减少了后台代码和逻辑,超爽!
后台代码
前端代码
ExtGrid封装代码:
public class ExtGrid:FineUIPro.Grid
{
public ExtGrid()
{
AllowPaging = true;
IsDatabasePaging = true;
AllowSorting = true;
PageSize = 20;///默认20条数据,
}
/// <summary>
/// 表名
/// </summary>
public string TableName
{
get
{
return this.Attributes["TableName"]?.ToString();
}
set
{
this.Attributes["TableName"] = value;
}
}
/// <summary>
/// 表主键
/// </summary>
public string PK
{
get
{
return this.Attributes["PK"]?.ToString();
}
set
{
this.Attributes["PK"] = value;
}
}
/// <summary>
/// 查询条件集合
/// </summary>
private List<string> Cds
{
get
{
///不知道为啥Attributes无法存放List类型,只能用viewstate
var obj = ViewState["cds"];
return obj == null ? null : (List<string>)obj;
}
set
{
ViewState["cds"] = value;
}
}
/// <summary>
/// 增加查询条件
/// </summary>
/// <param name="cd"></param>
public void F_AddCds(string cd)
{
Cds.Add(cd);
}
/// <summary>
/// 重置条件
/// </summary>
public void F_ClearCds()
{
Cds = new List<string>();
}
/// <summary>
/// 创建表实例
/// </summary>
/// <returns></returns>
public dynamic F_CreateT()
{
dynamic m = null;//这里创建数据库查询示例,按照实际情况进行创建,也可以使用反射
return m;
}
/// <summary>
/// 分页首次查询使用
/// </summary>
/// <param name="FristSelect"></param>
public void F_ViewData(bool GetPageCount=false,int PageIndex=0)
{
dynamic m = F_CreateT(); ///创建表对象实例
if (Cds.Count == 0)
{
Cds.Add("1=1");
}
if(GetPageCount)
{
///取查询结果总数
RecordCount = m.SelectCount(Cds.ToArray());
}
DataTable dt = m.SelectBy(SortField, SortDirection, DataKeyNames[0], PageIndex, PageSize, Cds.ToArray());
this.DataSource = dt;
this.DataBind();
}
/// <summary>
/// 重写分页查询事件
/// </summary>
/// <param name="e"></param>
protected override void OnPageIndexChange(GridPageEventArgs e)
{
F_ViewData(false,e.NewPageIndex);
base.OnPageIndexChange(e);
}
/// <summary>
/// 删除选中行
/// </summary>
/// <param name="i"></param>
/// <returns></returns>
public void F_DeleteSelectRow(int i)
{
dynamic m = F_CreateT(); ///创建表对象实例
//删除操作,这里不写啦
}
}
|