http://www.yeeoh.cn/newpk
終於完成了這個項目:框架設計,頁面設計,後台設計,交互設計,後台代碼,前台頁面代碼,前台交互代碼,數據庫設計,數據錄入,壓力測試,容錯測試,交互測試,修改,補丁,完全由一個人做完,中間還要到處跑生意.我想應該做的不錯了.
整個項目前後台大量使用了AJAX技術,不過看了看,和我的首頁比,有點小兒科,不過畢竟是商業產品網站,做的過於花哨,反到起不好的作用.想想當年在公司,一個WEB項目,前前後後,大批人加入,所有細節都分工到位,居然還搞了三個月,最後還成了豆腐渣工程,心寒啊.
有興趣的朋友可以談談這個項目的價值幾何.
因為之前有些人總是認為我只會忽悠AJAX,呵呵,我能拿出來的東西好像不止AJAX一種吧...
還有個人居然說,給某個人一個月時間學會AJAX,就留住他,更有某些人,看看那個招聘信息,我無語了.真把我當程序員看,哈哈.
這個項目雖然沒有與其他架構聯合,但是整個控制流程我本人感覺已經趨於某種完美了,畢竟我相信用過這套系統的人,不會有人說太多不人性化的話,我能想到的人性化基本全部寫進去,然後個人又把流程每個細節都過了至少三次,哎,我想這是我人生中最後一次操技術活了,將來這些東西,估計能丟的全要丟了.因為這個東西讓我很傷心,我自認為個人做事總是趨於完美主義,可是那些不懂技術的管理人員卻暴殄天物,居然和他說個不字,就嚴厲打擊報復,殊不知,三十年河東,三十年河西,既然你認為技術活是低賤的,而你又認為你的管理很出眾,那麼好,我奉陪,在技術上我敢說完全超過某些人,這樣,我放下技術,重頭來,就算是做管理我也不輸於任何人.
我記得事件的開端就是我說的兩個字:垃圾.罵的好,今後我還是把他當垃圾.
不過我再次也要強調一下,並不是我個人偏激,往往一件事情要解決,做錯的一方道個歉,其實也就沒什麼了,不過在我沒有收到那個道歉之前,那麼這件事情不會就此平息.
而事件開端的開端,我可以完全保證,絕對是為公事,並且絕對是為公司利益著想.
下面給出這個項目中我認為最滿意的控件,加強的分頁控件.
程序代碼
//分頁控制
//參數分別為:RS對象,每頁顯示條數,頁碼指向的鏈接,當前頁碼
function Pages(rsObj,pagesize,url,num){
var pageContent
rsObj.PageSize = pagesize
//如果當前沒有頁碼,默認指向第一頁
if(!$r(num) || $r(num) == "" || $r(num).Count ==0 || $r(num)<1){
num = 1;
rsObj.AbsolutePage = 1;
//否則指向該頁碼
}else{
num = Number($r(num)+"");
rsObj.AbsolutePage = num
}
//計算總頁數:為什麼不用RS.PageCount,因為之後要自動調整每頁顯示條數
//否則頁碼總數計算會出錯
var pageCount = Math.ceil(rsObj.RecordCount/pagesize)
pageContent = pageNum(rsObj,pageCount,url,num)
return "共 "+pageCount+"頁 / "+rsObj.RecordCount+" 條記錄 "+pageContent
}
//開始計算頁碼
function pageNum(rsObj,pgCont,url,num){
var CS,CSL,CSR,z,cont,thisContent="",maxPageNum=10
//當限制每次顯示的頁碼條數時,計算共有多少組頁碼
CS = Math.ceil(pgCont/maxPageNum)
//計算當前組頁碼的最大頁數
CSR = Math.ceil(num/maxPageNum)
//計算當前組頁碼的最小頁數
CSL = (CSR-1)*maxPageNum
//當前頁碼為最後一組
if(CS == CSR){
//因為最後一組頁碼不可能於所剩記錄條數相等,所以要做一下容錯
if(pgCont%maxPageNum == 0){
cont = CSL+maxPageNum
}else{
cont = CSL+(pgCont%maxPageNum)
}
}else{
cont = CSR*maxPageNum
}
//當前頁面為最後一頁,並且記錄數不等於默認顯示記錄數時,重新寫入記錄數
if(num == pgCont && rsObj.RecordCount%rsObj.PageSize != 0){
rsObj.PageSize = rsObj.RecordCount%rsObj.PageSize
}
CSL += 1
//設置首頁,上一頁
if(num > 1){
thisContent += pgUrl(url,1,"首頁")+pgUrl(url,(num-1),"上一頁")
}else{
thisContent += "<span>首頁</span><span>上一頁</span>"
}
//前後頁組
//如果當前頁碼不為第一組則顯示跳到上組頁碼鏈接
if(CSR > 1){
thisContent += pgUrl(url,(CSL-maxPageNum),"[...]")
}//else{
// thisContent += "<span>[...]</span>"
//}
//循環打出本組頁碼
for(z=CSL; z<=cont; z++){
thisContent += checkTO(z,num,url)
}
//如果當前頁碼不為第一組,並且還有下組頁碼則顯示跳到下組頁碼鏈接
if(CSR < CS){
thisContent += pgUrl(url,(cont+1),"[...]")
}//else{
// thisContent += "<span>[...]</span>"
//}
if(num != pgCont){
thisContent += pgUrl(url,(num+1),"下一頁")+pgUrl(url,pgCont,"尾頁")
}else{
thisContent += "<span>下一頁</span><span>尾頁</span>"
}
return thisContent
}
//判斷是否在本頁或本組
function checkTO(pageSort,num,url){
if(pageSort == num){
return "<span class='default'>["+pageSort+"]</span>"
}else{
return pgUrl(url,pageSort,"["+pageSort+"]")
}
}
//不在本頁或本組給出鏈接
function pgUrl(url,num,txt){
return '<a href="'+url+'page='+num+'">'+txt+'</a>'
}