本文主要分享一個Git.Framework 開發的一個專案的部分原始碼,此專案程式碼"比較垃圾",所以請各位碼農,碼畜,碼神,碼聖勿噴!發此文只為記錄工作問題以及分享問題!
一. 專案簡介
本專案原是某單位的票務管理系統,用於某時裝週來進行票務分配以及門票校驗使用的。其主要分為兩部分: 後臺管理系統 和 移動終端 。
使用到的技術: asp.net ,SQL Server,Wince,Sqlite
二. 前端展示
常用前端技術: bootstrap,jquery
前端是很多程式開發人員的詬病,CSS,html 永遠拖著後退, bootstrap絕對值得你擁有,參考地址 ; 別人高大上的東西你也能夠輕輕鬆鬆實現
(1) 登入頁面
(2) 列表頁面
(3) 無重新整理載入資料
三. 前端和後臺互動實現
這裡前端和後臺互動資料使用WebMethod方法來處理,具體程式碼如下:
![](https://i.iter01.com/images/86153736c3d440f2e7d2df2432d97112d2ef05f0cb7522cf2307c3de9447249a.gif)
[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 > 0) { 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; }
在aspx.cs程式碼檔案中的程式碼如上方式書寫,即可將一個方法釋出為WebMethod方法,類似於WebService可供前端來呼叫
![](https://i.iter01.com/images/86153736c3d440f2e7d2df2432d97112d2ef05f0cb7522cf2307c3de9447249a.gif)
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操作元件,自我評價:"自我感覺良好,大牛嗤之以鼻,菜鳥不知所云"。
![](https://i.iter01.com/images/86153736c3d440f2e7d2df2432d97112d2ef05f0cb7522cf2307c3de9447249a.gif)
public partial interface ITicketRule : IDbHelper<TicketRuleEntity> { } public partial interface ITicket : IDbHelper<TicketEntity> { }
其實沒啥意義,就是繼承了上一個介面
![](https://i.iter01.com/images/86153736c3d440f2e7d2df2432d97112d2ef05f0cb7522cf2307c3de9447249a.gif)
public partial class TicketDataAccess : DbHelper<TicketEntity>, ITicket { public TicketDataAccess() { } } public partial class TicketRuleDataAccess : DbHelper<TicketRuleEntity>, ITicketRule { public TicketRuleDataAccess() { } }
通過以上程式碼基本可以實現對錶TicketRule,Ticket 的基本增刪改查,其他的ORM都可以實現,沒啥好炫的,就怕不小心炫瞎了自己的眼睛 ,低調好!
![](https://i.iter01.com/images/86153736c3d440f2e7d2df2432d97112d2ef05f0cb7522cf2307c3de9447249a.gif)
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 = 0; 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