无刷新分页控件(原创)(jQuery+json+ashx)(Ajax)

原文地址为: 无刷新分页控件(原创)(jQuery+json+ashx)(Ajax)

近来在做一个项目,

有很多基本的信息表.

但这些信息都只有一些增删改查的相关操作

大多数表没有业务流的相关操作.

要是每个表的增删改查相关功能都一个个去做一个管理页

不单麻烦,也不算是一个程序员有的思想(不知道偷懒人程序员不算一个好的程序员)

三四十来张表.每张表做两个管理页.就是七八十人页面.

那我不想死.

所以.就打算做一个通用的增删改查控件

标题只是说一个分页显示控件,那还只是一个小点.

主要是看到现在园子里对这个做的人比效多.可能会有些点击吧.呵.

主要是以前我也做过一个那个无刷新分页的.

一下园子里就有好多人加我QQ,

有的是要源代码(那个版本JS压缩了一下),

有的是要我教jQuery,

有是就是问我那个控件怎么用.

只不过那个是用ACCESS+VS2008(jQuery+ashx+json)做的

只不过看看现在的开发.用ACC来做数据库的(大项目).那是不可能的吧

 

我们这个项目是用的SQL2005+VS2008

所以就在原来的基础上.更加一层的开发

(jQuery+ashx+json)

中间用到了josn的序列化与反序列化

反射,做了跨数据库接口等

 

当然,开始做的时候.

有一个好的设计方案是不可少的.

做的项目越多.就知道前期工作的重要性的.以前不怎么重视

在那个上面吃了大亏,就有了这个教训了

 

第一部分

下面是我的数据库设计,还有测试数据表结构设计

GradView

 

上面的五张表是控件要用的.

下面五张表是测试数据设计

 

第二部分

目录结构

fiel

Library里面,大家都是开发人员.这个结构看得懂吧(不知道这现设计好不好)

AjaxPages里面就是放ashx请求处理的页面的

主要是做了两个用户控件

EditGradView.ascx和ShowGradView.ascx

在ShowPage.aspx,EditPage.aspx分别引用这两个用户控件

先来看看效果吧

1

 

1.上面的按钮是功能操作的,选择结果是一个接口

就是第一列,有选择框,当你选择了哪里行的时候.点那个选择结果就会把相应的主键值传给用户,

让用户自行处理怎么操作,

当然,在我这个项目里就做了个批量删除功能了

2.增加记录

5

就会根据你在配置表里配置的数据,

自动生成一个表单,这个表单就是这样的

这里实现了几种控件,

文本框,密码框,日期选择框,文件上传框,下拉框,多行文本框

文本框里又有正则表达式验证(在配置表里配置你要验证的类型),

reg

日期就会自动出来一个日历控件

rl

文件上传.就会通过一个假的(ajax:实际是创建一个iframe)新上传.把你文件上传上去.返回一个文件名到那个框里

下拉框:当然只有外键和字典的时候.就会出来下拉了

 

 

3查询

点击查询的时候.也会自动根据你在配置表里配置的数据

自动在页页生成一个查询表单

4

同样也把你查询到的结果分页

 

3.编辑,删除,自定义

2

会在每行的后面出现功能操作,当然你可以配置可以不可以有这些操作

在这里.编辑就会跳到一个编辑表单让你修改

6

也是和增加记录的表单一样.只不过这里还要把编辑的数据绑定上去

当然,在这里功能操作里,都有相应的接口

比如我点删除的时候,要自己写一个方法,

所以我就在每个功能操作里写了一个用户接口

只要你引用了的页面里写了一个这样的接口,

就会去调用你自己写的方法,没有的话.就执行自己写的方法

这样的话.我那个项目,三四十张表.

就可以只要配置一个配置表里面的信息

就全都可以自动的实现增删改查了

http://liuju150.cacacoo.com/

在这里可以看到效果.只不过这不是我的空间,放到别人空间上去的

那里的SQL数据库的排序规则不和我的相同.

所以中文有些乱码了.

只不过还是可以看到效果的喽.

json实体帮助类

9310e85a14af99de4811ff4c77f1f911.jpe 24a924a57ba6b3f2b51fc9edb7ea4186.jpe Code
namespace GradView.WebApp.App_Code
24a924a57ba6b3f2b51fc9edb7ea4186.jpe9310e85a14af99de4811ff4c77f1f911.jpe
{
    
public class JsonHelper
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe    
{
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
/**//// <summary>
        
/// 生成Json格式
        
/// </summary>
        
/// <typeparam name="T"></typeparam>
        
/// <param name="obj"></param>
        
/// <returns></returns>

        public static string GetJson<T>(T obj)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            DataContractJsonSerializer json 
= new DataContractJsonSerializer(obj.GetType());
            
using (MemoryStream stream = new MemoryStream())
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe            
{
                json.WriteObject(stream, obj);
                
string szJson = Encoding.UTF8.GetString(stream.ToArray()); 
                
return szJson;
            }

        }

715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
/**//// <summary>
        
/// 获取Json的Model
        
/// </summary>
        
/// <typeparam name="T"></typeparam>
        
/// <param name="szJson"></param>
        
/// <returns></returns>

        public static T ParseFromJson<T>(string szJson)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            T obj 
= Activator.CreateInstance<T>();
            
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe            
{
                DataContractJsonSerializer serializer 
= new DataContractJsonSerializer(obj.GetType());
                
return (T)serializer.ReadObject(ms);
            }

        }

    }

}


json数据表帮助类

9310e85a14af99de4811ff4c77f1f911.jpe 24a924a57ba6b3f2b51fc9edb7ea4186.jpe Code
namespace GradView.WebApp.App_Code
24a924a57ba6b3f2b51fc9edb7ea4186.jpe9310e85a14af99de4811ff4c77f1f911.jpe
{
    
public static class JsonTableHelper
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe    
{
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
/**//// <summary> 
        
/// 返回对象序列化 
        
/// </summary> 
        
/// <param name="obj">源对象</param> 
        
/// <returns>json数据</returns> 

        public static string ToJson(this object obj)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            JavaScriptSerializer serialize 
= new JavaScriptSerializer();
            
return serialize.Serialize(obj);
        }


715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
/**//// <summary> 
        
/// 控制深度 
        
/// </summary> 
        
/// <param name="obj">源对象</param> 
        
/// <param name="recursionDepth">深度</param> 
        
/// <returns>json数据</returns> 

        public static string ToJson(this object obj, int recursionDepth)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            JavaScriptSerializer serialize 
= new JavaScriptSerializer();
            serialize.RecursionLimit 
= recursionDepth;
            
return serialize.Serialize(obj);
        }


715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
/**//// <summary> 
        
/// DataTable转为json 
        
/// </summary> 
        
/// <param name="dt">DataTable</param> 
        
/// <returns>json数据</returns> 

        public static string ToJson(DataTable dt)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            Dictionary
<stringobject> dic = new Dictionary<stringobject>();

            
int index = 0;
            
foreach (DataRow dr in dt.Rows)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe            
{
                Dictionary
<stringobject> result = new Dictionary<stringobject>();

                
foreach (DataColumn dc in dt.Columns)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe                
{
                    result.Add(dc.ColumnName, dr[dc].ToString());
                }

                dic.Add(index.ToString(), result);
                index
++;
            }

            
return ToJson(dic);
        }

    }

}

 http://www.cnblogs.com/liuju150/archive/2009/09/11/1565009.html
这里是表单的反射操作

数据操作方法

9310e85a14af99de4811ff4c77f1f911.jpe 24a924a57ba6b3f2b51fc9edb7ea4186.jpe Code
namespace GradView.Library.Data
24a924a57ba6b3f2b51fc9edb7ea4186.jpe9310e85a14af99de4811ff4c77f1f911.jpe
{    
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe    
/**//// <summary>
    
///Title: Classinfo类
    
///Description: Classinfo业务逻辑操作类
    
///@author LiuJu
    
///@version 1.0.0.0
    
///@date 2009-8-29
    
///@modify 
    
///@date 
    
/// </summary>

    [DataObject(true)]
    
public partial class BizClassinfo
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe    
{
        
private static IDataBaseOperate< Classinfo> baseOperate =(IDataBaseOperate< Classinfo>) DaoFactory.CreateInstance("DaoClassinfo");
        
e083dfde5a91f50979fe8979b4012b9d.jpe715f2d05503b99d41f3b6ba2cdccc84d.jpe        
BaseOperation#region BaseOperation
        
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
/**//// <summary>
        
/// 在dbo.ClassInfo中增加一条记录
        
/// </summary>
        
/// <param name="model">包含被插入数据的实体对象</param>
        
/// <returns>影响行数</returns>

        [DataObjectMethod(DataObjectMethodType.Insert)]
        
public static int Insert(Classinfo model)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            
if(model != null)
                
return baseOperate.Insert(model);
            
else
                
throw new ApplicationException("在dbo.ClassInfo中增加一条记录时,传递的参数model为Null!");
        }

        
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
/**//// <summary>
        
/// 在dbo.ClassInfo中新增一条记录,支持数据库事务
        
/// </summary>
        
/// <param name="model">包含被插入数据的实体对象</param>
        
/// <param name="trans">事务参数</param>
        
/// <returns>影响行数</returns>

        [DataObjectMethod(DataObjectMethodType.Insert)]
        
public static int Insert(Classinfo model,object trans)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            
if(model != null && trans !=null)
                
return baseOperate.Insert(model,trans);
            
else
                 
throw new ApplicationException("在dbo.ClassInfo中增加一条记录时,传递的参数model,trans有错误!");;
        }

        
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
/**//// <summary>
        
/// 在dbo.ClassInfo中删除一条记录
        
/// </summary>
        
/// <param name="model">包含主键值的实体对象</param>
        
/// <returns>所影响的行数</returns>

        [DataObjectMethod(DataObjectMethodType.Delete)]
        
public static int Delete(Classinfo model)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            
if(model != null)
                
return baseOperate.Delete(model);    
            
else
                
throw new ApplicationException("在dbo.ClassInfo中删除一条记录时,传递的参数model为Null!");;
        }

        
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
/**//// <summary>
        
/// 在dbo.ClassInfo中删除一条记录,支持数据库事务
        
/// </summary>
        
/// <param name="model">包含主键值的实体对象</param>
        
/// <param name="trans">事务参数</param>
        
/// <returns>所影响的行数</returns>

        [DataObjectMethod(DataObjectMethodType.Delete)]
        
public static int Delete(Classinfo model,object trans)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            
if(model != null && trans !=null )
                
return baseOperate.Delete(model,trans);    
            
else
                
throw new ApplicationException("在dbo.ClassInfo中删除一条记录时,传递的参数model,trans有错误!");
        }

        
        
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
/**//// <summary>
        
/// 在dbo.ClassInfo中完整更新一条记录
        
/// </summary>
        
/// <param name="model">包含被更新数据的实体对象</param>
        
/// <returns>影响行数</returns>

        [DataObjectMethod(DataObjectMethodType.Update)]
        
public static int  Update(Classinfo model)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            
if(model != null)
                
return baseOperate.Update(model);
            
else
                 
throw new ApplicationException("在dbo.ClassInfo中更新一条记录时,传递的参数model为Null!");
        }

        
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
/**//// <summary>
        
/// 在dbo.ClassInfo中完整更新一条记录,支持数据库事务
        
/// </summary>
        
/// <param name="model">包含被更新数据的实体对象</param>
        
/// <param name="trans">事务参数</param>
        
/// <returns>影响行数</returns>

        [DataObjectMethod(DataObjectMethodType.Update)]
        
public static int Update(Classinfo model,object trans)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            
if(model != null && trans !=null)
                
return baseOperate.Update(model,trans);
            
else
               
throw new ApplicationException("在dbo.ClassInfo中更新一条记录时,传递的参数model,trans有错误!");
        }

        
        
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
/**//// <summary>
        
/// 根据指定的Sql更新dbo.ClassInfo表中的一条记录
        
/// </summary>
        
/// <param name="sql">Update的Sql语句</param>
        
/// <param name="parms">sql参数</param>
        
/// <returns>返回数据库受影响的记录数</returns>

        [DataObjectMethod(DataObjectMethodType.Update)]
          
public static int Update(string sql, object[] parms)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            
if(sql != null && parms !=null)
                
return baseOperate.Update(sql,parms);
            
else
               
throw new ApplicationException("根据指定的Sql在dbo.ClassInfo中更新一条记录时,传递的参数sql,parms有错误!");
        }



715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
/**//// <summary>
        
/// 根据指定的Sql更新dbo.ClassInfo表中的一条记录,支持数据库事务.
        
/// </summary>
        
/// <param name="sql">Update的Sql语句</param>
        
/// <param name="parms">sql参数</param>
        
/// <param name="trans">事务参数</param>
        
/// <returns>返回数据库受影响的记录数</returns>

        [DataObjectMethod(DataObjectMethodType.Update)]
          
public static int Update(string sql, object[] parms, object trans)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            
if(sql != null && parms !=null && trans !=null)
                
return baseOperate.Update(sql,parms,trans);
            
else
               
throw new ApplicationException("根据指定的Sql在dbo.ClassInfo中更新一条记录时,传递的参数sql,parms,trans有错误!");
        }

        
            
        
        
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
/**//// <summary>
        
/// 根据主键获取dbo.ClassInfo中的一条记录
        
/// </summary>
        
/// <param name="id"></param>
        
/// <returns></returns>

        [DataObjectMethod(DataObjectMethodType.Select)]
        
public  static Classinfo GetModel(Classinfo model)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            
if(model != null )
                
return baseOperate.GetModel(model);    
            
else
                
throw new ApplicationException("根据主键获取dbo.ClassInfo中的一条记录时,传递的参数model为Null!");
                    
        }

        
        
// <summary>
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe
        /**//// 根据指定的SQL获取dbo.ClassInfo中的一条记录
        
/// </summary>
        
/// <param name="sql">SQL语句</param>
        
/// <returns>实体对象</returns>

        [DataObjectMethod(DataObjectMethodType.Select)]
          
public static Classinfo  GetModel(string sql,object[] parms)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            
if(!string.IsNullOrEmpty(sql))
                
return baseOperate.GetModel(sql,parms);    
            
else
                
throw new ApplicationException("根据指定的SQL获取dbo.ClassInfo中的一条记录时,传递的参数sql为Null!");
        }

        
        
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
/**//// <summary>
        
/// 在dbo.ClassInfo中获取所有记录
        
/// </summary>
        
/// <returns></returns>

        [DataObjectMethod(DataObjectMethodType.Select)]
        
public static IList<Classinfo> GetList()
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            
return baseOperate.GetList();
        }

        
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
/**//// <summary>
        
/// 根据指定的SQL在dbo.ClassInfo中获取所有记录
        
/// </summary>
        
/// <param name="sql">SQL语句</param>
        
/// <returns>记录集</returns>

        [DataObjectMethod(DataObjectMethodType.Select)]
        
public static IList<Classinfo> GetList(string sql,object[] parms)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            
if(!string.IsNullOrEmpty(sql))
                
return baseOperate.GetList(sql,parms);    
            
else
                
throw new ApplicationException("根据指定的SQL在dbo.ClassInfo中获取所有记录时,传递的参数sql为Null!");
        }
    
        
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
/**//// <summary>
        
/// 在dbo.ClassInfo中查询某条记录是否存在
        
/// </summary>
        
/// <param name="model">包含主键值的实体对象</param>
        
/// <returns>存在返加true,不存在返回false</returns>

        [DataObjectMethod(DataObjectMethodType.Select)]
        
public static bool Exists(Classinfo model)
715f2d05503b99d41f3b6ba2cdccc84d.jpee083dfde5a91f50979fe8979b4012b9d.jpe        
{
            
if(model != null )
                
return baseOperate.Exists(model);    
            
else
                
throw new ApplicationException("在dbo.ClassInfo中查询某条记录是否存在时,传递的参数model为Null!");
                    
        }

        
        
#endregion

    }

}

 


转载请注明本文地址: 无刷新分页控件(原创)(jQuery+json+ashx)(Ajax)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值