Git.Framework 框架随手记-- 分享一个"比较垃圾"的项目
本文主要分享一个Git.Framework 开发的一个项目的部分源码,此项目代码"比较垃圾",所以请各位码农,码畜,码神,码圣勿喷!发此文只为记录工作问题以及分享问题!
一. 项目简介
本项目原是某单位的票务管理系统,用于某时装周来进行票务分配以及门票校验使用的。其主要分为两部分: 后台管理系统 和 移动终端 。
使用到的技术: asp.net ,SQL Server,Wince,Sqlite
二. 前端展示
常用前端技术: bootstrap,jquery
前端是很多程序开发人员的诟病,CSS,html 永远拖着后退, bootstrap绝对值得你拥有,参考地址 ; 别人高大上的东西你也能够轻轻松松实现
(1) 登录页面
(2) 列表页面
(3) 无刷新加载数据
三. 前端和后台交互实现
这里前端和后台交互数据使用WebMethod方法来处理,具体代码如下:
[WebMethod(MessageName = "GetList", EnableSession = true)]
public static string GetList(PageInfo pageInfo, ShowFieldEntity entity)
{
ShowProvider provider = new ShowProvider();
List<ShowFieldEntity> listResult = provider.GetList(entity, ref pageInfo);
listResult = listResult == null ? new List<ShowFieldEntity>() : listResult;
RuleProvider ruleProvider = new RuleProvider();
StringBuilder sb = new StringBuilder();
JsonObject jsonResult = new JsonObject(); JsonProperty p = new JsonProperty();
JsonObject jsonObject = null;
if (listResult.Count > )
{
foreach (var t in listResult)
{
string Begin = ruleProvider.BeginTicketNum(t.FieldNum);
int Num = ruleProvider.GetNum(t.FieldNum);
int unNum = ruleProvider.GetNum(t.FieldNum, "admin");//获得未分配的票数
int useNum = Num - unNum;//获得已分配的票数
jsonObject = new JsonObject();
jsonObject.AddProperty("FieldNum", t.FieldNum);
jsonObject.AddProperty("FieldName", t.FieldName);
jsonObject.AddProperty("Begin", Begin);
jsonObject.AddProperty("Num", Num);
jsonObject.AddProperty("useNum", useNum);
jsonObject.AddProperty("unNum", unNum);
jsonObject.AddProperty("Remark", t.Remark);
jsonObject.AddProperty("CreateTime", t.CreateTime.ToString());
p.Add(jsonObject);
}
jsonResult.AddProperty("list", p.Items.Select(a => a.Object).ToArray());
}
jsonResult.AddProperty("count", pageInfo.RowCount);
string json = jsonResult.ToString();
return json;
}
WebMethod 方法
在aspx.cs代码文件中的代码如上方式书写,即可将一个方法发布为WebMethod方法,类似于WebService可供前端来调用
PageClick: function (pageIndex) {
var fieldName = $("#txtFieldName").val();
var remark = $("#txtRemark").val();
var pageSize = 10000;
var jsonParam = '{ "pageInfo":{"PageIndex":' + pageIndex + ', "PageSize":' + pageSize + ' },"entity":{"FieldName":"' + fieldName + '","Remark":"' + remark + '"}}';
$.WebService("/Show/List.aspx/GetList", jsonParam,
function (result) {
var Html = "";
var json = $.parseJSON(result.d); if (json.list != null && json.list.length > 0) { $.each(json.list, function (index, item) {
Html += "<tr>";
Html += "<td align=\"center\"><input type=\"checkbox\" class='checkItem' id=\"" + item.FieldNum + "\" /></td>";
Html += "<td>" + (index + 1) + "</td>";
Html += "<td>" + item.FieldName + "</td>";
Html += "<td>" + item.Begin + "</td>";
Html += "<td>" + (item.Num == undefined || item.Num == null ? "" : item.Num) + "</td>";
Html += "<td>" + item.unNum + "</td>";
Html += "<td>" + item.useNum + "</td>";
Html += "<td>" + item.Remark + "</td>";
Html += "<td>" + item.CreateTime + "</td>";
Html += "<td><a href='javascript:void(0)' onclick=\"Show.Edit('" + item.FieldNum + "','" + item.FieldName + "','" + item.Remark + "')\">编辑</a> ";
Html+="<a href='javascript:void(0)' onclick=\"Show.ItemDel('" + item.FieldNum + "')\">删除</a> ";
Html += "<a href=\"/Rule/Report.aspx?FieldNum=" + item.FieldNum + "\">报表</a>";
Html += " <a href=\"/Rule/Add.aspx?FieldNum=" + item.FieldNum + "\">发票计划</a>";
Html += "</td>";
Html += "</tr>";
});
} else {
Html += " <tr id=\"zero\"> <td colspan='10'> <center>没有找到记录!<center> </td> </tr>";
}
$("#tabList tbody").html(Html);
// $("#mypager").pager({ pagenumber: pageIndex, recordCount: json.count, pageSize: pageSize, customerText: true, buttonClickCallback: Show.PageClick });
$.jBox.closeTip()
}, function () {
$.jBox.tip("正在加载...", 'loading');
}, function () {
$.jBox.tip("加载入库单列表错误!", 'error');
});
},
前端调用后台方法
在js中扩展了jQuery 的一个方法 WebService,用于调用后台的方法获取数据,其中比较重要的代码如下:
$.WebService("/Show/List.aspx/GetList",,)
这里是请求页面地址,后面GetList为后台WebMethod发布的方法, 其中GetList指向如下
[WebMethod(MessageName = "GetList", EnableSession = true)]
/Show/List.aspx/GetList 就是调用 页面"/Show/List.aspx" 中 MessageName="GetList" 修饰的方法
四. Sqlite 中常见的问题
相信使用过SQLite的也会经常遇到这个问题, 在.NET中调用Sqlite操作,需要添加一个动态链接库,会经常出现这个问题.
如果出现如上错误,可以根据如下几个方面去查找问题:
(1) Sqlite 对应的版本问题,最好到官网下载完整的文件包
(2) 系统32,64位的问题, 一般在IIS中应用程序中>>应用程序池默认设置>>启用32位应用程序 (大部分在VS中调试正常IIS失败的原因在于此处)
(3) 动态链接库貌似是基于C++,所以需要安装C++环境,一般.NET有自带
五. 集成操作ORM
这里又提到了ORM,很恶心,既不是Linq to SQL , 也不是EF,更加不是NHibernate等, 这里我们称之为 "GIT" 。如何如此自己明白就好, 这是自己开发的一个ORM操作组件,自我评价:"自我感觉良好,大牛嗤之以鼻,菜鸟不知所云"。
public partial interface ITicketRule : IDbHelper<TicketRuleEntity>
{
} public partial interface ITicket : IDbHelper<TicketEntity>
{
}
数据操作接口
其实没啥意义,就是继承了上一个接口
public partial class TicketDataAccess : DbHelper<TicketEntity>, ITicket
{
public TicketDataAccess()
{
} } public partial class TicketRuleDataAccess : DbHelper<TicketRuleEntity>, ITicketRule
{
public TicketRuleDataAccess()
{
} }
数据操作实现代码
通过以上代码基本可以实现对表TicketRule,Ticket 的基本增删改查,其他的ORM都可以实现,没啥好炫的,就怕不小心炫瞎了自己的眼睛 ,低调好!
public List<ShowFieldEntity> GetList(ShowFieldEntity entity, ref PageInfo pageInfo)
{
entity.Include(a => new { a.FieldNum,a.FieldName,a.BeginTime,a.EndTime,a.CreateTime,a.CreateUser,a.Remark});
if (!entity.FieldName.IsEmpty())
{
entity.Where("FieldName", ECondition.Like, "%" + entity.FieldName + "%");
}
if (!entity.Remark.IsEmpty())
{
entity.Where("Remark", ECondition.Like, "%" + entity.Remark + "%");
}
entity.OrderBy(a => a.ID, EOrderBy.DESC);
int rowCount = ;
List<ShowFieldEntity> listResult = this.ShowField.GetList(entity,pageInfo.PageSize,pageInfo.PageIndex,out rowCount);
pageInfo.RowCount = rowCount;
return listResult;
}
查询分页代码
六. 部分源码开放
很不好意思的吊胃口,我只能公开部分源码,毕竟涉及到公司的商业项目,所以只能如此.
获取部分源码请加入群 88718955 ,我真的不是来发广告的!有问题大家多多交流, 我也要成为大牛。
作者:情缘
出处:http://www.cnblogs.com/qingyuan/
关于作者:从事仓库,生产软件方面的开发,在项目管理以及企业经营方面寻求发展之路
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
联系方式: 个人QQ 821865130 ; 仓储技术QQ群 88718955,142050808 ;
吉特仓储管理系统 开源地址: https://github.com/hechenqingyuan/gitwms
Git.Framework 框架随手记-- 分享一个"比较垃圾"的项目的更多相关文章
- Git.Framework 框架随手记--存储过程简化
在很多的ORM中对存储过程操作都是一个棘手的地方,因为存储过程是一段预编译的代码,其中可以包含很多处理过程.在Git.Framework中也同样存在这样的问题,目前没有能力解决这个问题.但是对于存储过 ...
- Git.Framework 框架随手记--ORM条件组合
在上一篇<Git.Framework 框架随手记--ORM新增操作>中简单记录了如何对数据进行删除和修改,其用法都非常简单,在文章中提到了Where()方法,本文将详述Where() 等条 ...
- Git.Framework 框架随手记--ORM编辑删除
前面一篇文章<Git.Framework 框架随手记--ORM新增操作>主要讲解了如何使用Git.Framework往数据库中添加数据.其操作过程相对简单,本章主要记录如何编辑数据和修改数 ...
- Git.Framework 框架随手记--ORM项目工程
前面已经简单介绍过了该框架(不一定是框架),本文开始重点记录其使用过程.可能记录的内容不是太详尽,框架也可能非常烂,但是里面的代码句句是实战项目所得.本文非教唆之类的文章,也非批判之类的文章,更不是炫 ...
- Git.Framework 框架随手记--SQL配置文件的使用
前面几篇文章讲到了如何使用框架进行简单结构的增删改查操作,由于个人能力有限在对于复杂的SQL操作面前也是无能为力,只能自己动手来写SQL语句.在Git.Framework中提供了一个公共的接口来直接操 ...
- Git.Framework 框架随手记--ORM查询数据集合 二
一. 分组查询 在SQL中使用Group By 来对数据分组,在实际中分组中一般与聚合函数一并使用.在Git.Framework中提供了相应的分组方法 DataTable Group(T entit ...
- Git.Framework 框架随手记--ORM新增操作
本篇主要记录具体如何新增数据,废话不多说,开始进入正文. 一. 生成工程结构 上一篇已经说到了如何生成工程结构,这里在累述一次. 1. 新建项目总体结构 使用VS新建项目结构,分层结构可以随意.我们使 ...
- Git.Framework 框架随手记--历史原因
Git.Framework 是近几年工作的一些工作经验总结,虽不能和某些知名的框架相提并论,但是还是比较实用的.此框架经过三年多的升级和维护,已经具有较强的实用性,在此记录该框架的使用操作方式,贡献给 ...
- Git.Framework 框架随手记--IIS7运行序列化问题
客户反馈系统又登录不了,这是最近几次连续出现相同的问题,从日志反应情况来看: 日志级别:[info] 日志位置:Git.Framework.Resource.ResourceManager 日志时间: ...
随机推荐
- 烂泥:KVM中安装Windows Server 2008 R2系统
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在前一篇文章中,我介绍了有关在KVM中的安装Centos系统.接下来,就来介绍如何在KVM中安装Windows系统. 注意:在此我安装的是windows ...
- Python 基本类型转换
python 有关字符串处理有哪些好用的方法?reverse len 字符串分割,合并?截取?查找? find index join split unicode字符串的表示 ""& ...
- 【Android UI设计与开发】1.引导界面(一)ViewPager介绍和简单实现
1.ViewPager 实现效果图 2.ViewPager 实现功能 ViewPager类提供了多界面切换的新效果,新效果有如下特征: <1>当前显示一组界面中的其中一个界面: <2 ...
- Codeforces Round #FF/#255 D DZY Loves Modification --贪心+优先队列
题意:给你一个矩阵,每次选某一行或者某一列,得到的价值为那一行或列的和,然后该行每个元素减去p.问连续取k次能得到的最大总价值为多少. 解法: 如果p=0,即永远不减数,那么最优肯定是取每行或每列那个 ...
- 对Spring的IoC和DI最生动的解释
首先想说说IoC(Inversion of Control,控制倒转).这是spring的核心,贯穿始终.所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系 ...
- Windows安装 ANT
apache-ant-1.7.1-bin.zip 下载地址:http://ant.apache.org/bindownload.cgi 第一步 解压apache-ant-1.7.1-bin. ...
- java 16-1 ArrayList的练习1
需求: ArrayList去除集合中字符串的重复值(去掉相同的字符串) 分析: 第一种做法:创建一个新的空集合: A:创建1个具有相同字符串的集合 B:创建1个空的集合 C:遍历第一个集合里面的元素 ...
- Android自定义进度条颜色
这个没法了只能看源码了,还好下载了源码, sources\base\core\res\res\ 下应有尽有,修改进度条颜色只能找progress ,因为是改变样式,首先找styles.xml ? 1 ...
- 时间与NSString转换
//传进来时间字符串转换 + (NSString *) getChatTimeString:(NSString *)timeString { if (timeString==nil || timeSt ...
- 创建Java Web监听器
之前从Java web一路学习过来,一直没有学习过Servlet容器类的一些高级用法,因为学完简单的JSP以及Servlet编写之后就开始了Spring的学习 对web应用的一些常用变量进行 appl ...