Spring.NET企业架构实践之 JQuery + FlexiGrid + ASP.NET MVC + NVelocity + WCF + LINQ + NHibernate 综合应用
今晚看了幾篇項(xiàng)目應(yīng)用的博客感受很深,晚上怎么都睡不著覺。于是乎,下面的博客誕生了 ^-^。
  我在想是不是要把我熟悉的Spring.NET框架與別的框架或技術(shù)結(jié)合起來。由于心血來潮,斗膽在園子里這么多大牛的面前班門弄斧了。長(zhǎng)話短說,下面是我項(xiàng)目中用到的技術(shù)(圖1):
1.JQuery的FlexiGrid插件
2.ASP.NET MVC
3.NVelocity?目前沒有與MVC結(jié)合,只是用來簡(jiǎn)單的替換模板
4.WCF?
5.LINQ?
6.NHibernate
(圖1)
?這個(gè)項(xiàng)目目前版本是V1.0版本,我以后會(huì)定期更新這個(gè)項(xiàng)目。該項(xiàng)目包含了18個(gè)類庫(kù)(圖2)。我后續(xù)會(huì)更新這篇文章和代碼,試圖打造一套完美的解決方案。
(圖2)
項(xiàng)目中主要用到的是FlexiGrid插件,該插件類似Ext的GridPanel。我把這個(gè)插件簡(jiǎn)單的修改了一下,只能更多的功能
//add?cell
?????????????????????????????$('thead?tr:first?th',?g.hDiv).each
????????????????????????????????(
?????????????????????????????????????function()?{
?????????????????????????????????????????var?idx?=?$(this).attr('axis').substr(3);
?????????????????????????????????????????if?(n.name?==?row.cell[idx].name)?{
?????????????????????????????????????????????td.align?=?this.align;
?????????????????????????????????????????????//render(cell,row,data,index)?劉冬
?????????????????????????????????????????????//cell:當(dāng)前單元格的數(shù)據(jù)
?????????????????????????????????????????????//row:當(dāng)前行數(shù)據(jù)
?????????????????????????????????????????????//data:所有數(shù)據(jù)
?????????????????????????????????????????????//index:當(dāng)前行號(hào)
?????????????????????????????????????????????var?col?=?n;
?????????????????????????????????????????????var?cell?=?row.cell[idx].value;
?????????????????????????????????????????????if?(col.render)?{
?????????????????????????????????????????????????td.innerHTML?=?col.render(cell,?row,?data,?idx);
?????????????????????????????????????????????}?else?{
?????????????????????????????????????????????????td.innerHTML?=?cell;
?????????????????????????????????????????????}
?????????????????????????????????????????????$(tr).append(td);
?????????????????????????????????????????????$(td).attr("value",?cell);??//插入實(shí)際值(value)的屬性
?????????????????????????????????????????}
?????????????????????????????????????});
?
先秀一下FlexiGrid?的效果(圖3)
(圖3)
?
還用到了jquery.UI和jquery.form插件(圖4)
(圖4)
?
NVelocity?,我是用于導(dǎo)出Excel。首先寫一個(gè)XML格式的模板,然后用其替換上面的內(nèi)容,最后輸入Excel文件(圖5)
(圖5)
?
至于WCF,我放棄了Runtime.Serialization功能,而改用引用實(shí)體和契約(Contract)。
  V1.0版本中?FlexiGrid功能列表:
  1.數(shù)據(jù)的增刪改
  2.顯示/隱藏列
  3.頁(yè)面中綁定列
  4.計(jì)算列(A列與B列的計(jì)算),小計(jì),合計(jì)
  5.導(dǎo)出Excel
  6.設(shè)置分頁(yè)數(shù)量
  擴(kuò)增FlexiGrid?API
  1.在colModel的配置中增加render方法,其中有4個(gè)參數(shù)
  cell:單元格焦點(diǎn)的數(shù)據(jù), row:該行數(shù)據(jù), data:所有數(shù)據(jù), index:行號(hào)。
  通過這些參數(shù)我們可以實(shí)現(xiàn)計(jì)算列、小計(jì)、合計(jì)、序號(hào)等功能。§
  例如:render:?function(cell, row, data, index) {
????????????????return?cell ??"男"?:?"女"?;
??????????? }
  2.在獲取當(dāng)前行中數(shù)據(jù)的函數(shù)$('.trSelected td:nth-child(1)', grid)中,參數(shù)value屬性。通過value可以獲取當(dāng)前單元格的值,而不是顯示出的內(nèi)容。
  如:顯示"男"?,獲取到true
存在的Bug
  1.jquery.flexbox插件實(shí)現(xiàn)下拉框的動(dòng)態(tài)選擇
  2.FlexiGrid服務(wù)器端篩選(過濾)
?
FlexiGrid中文API手冊(cè)
屬性名  | 說明  | 類型  | 默認(rèn)值  | 
height  | 高度  | 數(shù)值  | 200  | 
width  | 寬度  | 數(shù)值|字符  | auto  | 
striped  | 隔行變色  | 布爾  | true  | 
novstripe  | 顯示條紋  | 布爾  | false  | 
minwidth  | 列的最小寬度  | 數(shù)值  | 30  | 
minheight  | 列的最小高度  | 數(shù)值  | 80  | 
resizable  | 可拖動(dòng)網(wǎng)格大小  | 布爾  | true  | 
url  | Ajax請(qǐng)求地址  | 字符  | false  | 
method  | 請(qǐng)求方式(POST|GET)  | 字符  | POST  | 
dataType  | 數(shù)據(jù)類型(JSON|XML,建議使用JSON)  | 字符  | 'xml'  | 
errormsg  | 錯(cuò)誤提升信息  | 字符  | Connection Error  | 
usepager  | 使用分頁(yè)  | 布爾  | false  | 
page  | 當(dāng)前頁(yè)碼  | 數(shù)值  | 1  | 
total  | 總行數(shù)  | 數(shù)值  | 1  | 
useRp  | 顯示分頁(yè)下拉列表  | 布爾  | true  | 
rp  | 每頁(yè)顯示行數(shù)  | 數(shù)值  | 15  | 
rpOptions  | 分頁(yè)設(shè)置  | 數(shù)組  | [10, 15, 20, 25, 40],  | 
title  | 顯示標(biāo)題  | 布爾  | false  | 
pagestat  | 顯示當(dāng)前頁(yè)和總頁(yè)面的樣式,{from}、{ to }、{ total }分別為開始數(shù)、結(jié)束數(shù)、總數(shù) ?  | 字符  | Displaying {from} to {to} of {total} items  | 
procmsg  | 正在處理的提示信息  | 字符  | Processing, please wait ...'  | 
query  | 搜索查詢的條件  | 字符  | 空字符  | 
qtype  | 搜索查詢的列名  | 字符  | 空字符  | 
nomsg  | 無結(jié)果的提示信息  | 字符  | No items  | 
hideOnSubmit  | 隱藏提交  | 布爾  | true  | 
autoload  | 自動(dòng)加載  | 布爾  | true  | 
blockOpacity  | 透明度設(shè)置  | 數(shù)值  | 0.5  | 
onToggleCol  | 當(dāng)在行之間轉(zhuǎn)換時(shí)  | 布爾  | false  | 
?
?
FlexiGrid修改版下載
  代碼下載
  SVN代碼托管地址:http://springnetdemo1.googlecode.com/svn/trunk/
版權(quán)所有:博客園?劉冬.NET
感謝朋友對(duì)我的支持,和經(jīng)常探討問題的朋友們?孤獨(dú)俠客?莫耶
  參考:
  http://www.cnblogs.com/lonely7345/archive/2009/02/03/1382780.html
  http://www.cnblogs.com/moye/archive/2008/11/30/1344369.html
總結(jié)
以上是生活随笔為你收集整理的Spring.NET企业架构实践之 JQuery + FlexiGrid + ASP.NET MVC + NVelocity + WCF + LINQ + NHibernate 综合应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 信息系统安全管理
 - 下一篇: 微信投票html5页面制作,如何制作微信