国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

B/S模式下數(shù)據(jù)全屏編輯及批量復(fù)制粘貼的實(shí)現(xiàn)方法

2017-09-17 18:34吳志泉
科學(xué)與財(cái)富 2017年25期
關(guān)鍵詞:復(fù)制粘貼

吳志泉

摘要:本文詳細(xì)闡述了在B/S模式下如何實(shí)現(xiàn)數(shù)據(jù)的全屏編輯及如何通過復(fù)制-粘貼模式實(shí)現(xiàn)數(shù)據(jù)的批量錄入方法。該方法在作者以asp.net為編程語(yǔ)言,以O(shè)racle為后臺(tái)數(shù)據(jù)庫(kù)的設(shè)計(jì)的《水井分層測(cè)試系統(tǒng)》中得到具體應(yīng)用,取得了良好的效果。

關(guān)鍵詞:Asp.net;Oracle;全屏編輯;復(fù)制-粘貼

1.引言

隨著信息化的不斷深入,企業(yè)內(nèi)部依托局域網(wǎng),以B/S模式開發(fā)的應(yīng)用系統(tǒng)逐漸成為主流,但多數(shù)據(jù)應(yīng)用系統(tǒng)在進(jìn)行數(shù)據(jù)編輯時(shí)都是逐條進(jìn)行的,即編輯完一條數(shù)據(jù)后,按提交按鈕,再繼續(xù)編輯下一條。在很多時(shí)候用戶在錄入數(shù)據(jù)時(shí)都需要多條錄入一次提交,這樣不僅方便對(duì)數(shù)據(jù)進(jìn)行檢查,也能提高數(shù)據(jù)庫(kù)的編輯速度,同時(shí)用戶還提出要能通過復(fù)制-粘貼模式進(jìn)行數(shù)據(jù)的編輯。作者通過數(shù)據(jù)數(shù)據(jù)回調(diào)及隱含域等方法實(shí)現(xiàn)了數(shù)據(jù)的全屏及復(fù)制-粘貼模式實(shí)現(xiàn)了數(shù)據(jù)的批量編輯。

2.設(shè)計(jì)原理

B/S模式的開發(fā)人員都知道,通過web模式錄入數(shù)據(jù),在進(jìn)行數(shù)據(jù)提交時(shí),都要進(jìn)行網(wǎng)頁(yè)的刷新,刷新之后,動(dòng)態(tài)錄入的數(shù)據(jù)基本上都會(huì)被清除掉。雖然現(xiàn)在有了Ajax技術(shù),但其實(shí)質(zhì)仍然是通過局部刷新網(wǎng)頁(yè)來提交數(shù)據(jù)。在刷新后系統(tǒng)設(shè)計(jì)時(shí)生成的控件內(nèi)的數(shù)據(jù)通過數(shù)據(jù)回調(diào)仍然顯示在控件上,但動(dòng)態(tài)添加的控件及其里面的數(shù)據(jù)都會(huì)被清除掉。利用隱含域及數(shù)據(jù)回調(diào)技術(shù),在網(wǎng)頁(yè)進(jìn)行刷新時(shí),把動(dòng)態(tài)控件及其里面的內(nèi)容寫到隱含域中,頁(yè)面刷新后再根據(jù)隱含域的內(nèi)容在頁(yè)面上進(jìn)行控件的重畫及把原來的數(shù)據(jù)寫到重畫后的控件中,然后通過控制光標(biāo)鍵在控件內(nèi)的跳轉(zhuǎn),來實(shí)現(xiàn)類似于Excel方式的全屏編輯。通過javascript的剪貼板讀取函數(shù)把里面的數(shù)據(jù)讀出來,按格式進(jìn)行拆分,把拆分后的數(shù)據(jù)填充到頁(yè)面數(shù)據(jù)編輯框控件中。

3.設(shè)計(jì)思路

3.1全屏編輯

通過添加行按鈕,在頁(yè)面上新添加一行或多行數(shù)據(jù)編輯框,通過javascript函數(shù)↑、↓、回車鍵、Ctrl鍵控制光標(biāo)在編輯框內(nèi)跳轉(zhuǎn),↑跳轉(zhuǎn)到上一個(gè)編輯框,↓跳轉(zhuǎn)到下一個(gè)編輯框,回車鍵跳轉(zhuǎn)到后一個(gè)編輯框,Ctrl跳轉(zhuǎn)到前一個(gè)編輯框。

3.2復(fù)制-粘貼

由于復(fù)制-粘貼是在客戶端進(jìn)行的,我們可以用JavaScript的ClipboardData.getData函數(shù)來讀取剪貼板內(nèi)的數(shù)據(jù),然后把讀取的數(shù)據(jù)根據(jù)數(shù)據(jù)編輯框的個(gè)數(shù)和行數(shù),拆分成數(shù)組分別填充到數(shù)據(jù)編輯框中。

3.3數(shù)據(jù)提交

由于asp.net在進(jìn)行數(shù)據(jù)提交時(shí),只提交系統(tǒng)設(shè)計(jì)時(shí)生成的控件及其內(nèi)容,動(dòng)態(tài)添加的控件不會(huì)被提交,因此在進(jìn)行數(shù)據(jù)提交時(shí),先通過javascript把客戶端動(dòng)態(tài)生成的控件及內(nèi)容寫到設(shè)計(jì)時(shí)生成的隱含控件(隱含域)中,然后再服務(wù)器端對(duì)隱含域的內(nèi)容進(jìn)行解析,再把解析后的結(jié)果保存到數(shù)據(jù)庫(kù)中。

4.程序?qū)崿F(xiàn)方法

復(fù)制-粘貼程序片斷

function WriteDatatoTable(curTable,iSource)

{

var iSourceData;

if (iSource==0)

iSourceData = window.clipboardData.getData('text');

if (iSource==1)

iSourceData=document.getElementById("ClipboardText").value;

if (!iSourceData)

{

document.getElementById("TipLabel").innerHTML="沒有符合條件的數(shù)據(jù)";

return;

}

else

{

document.getElementById("TipLabel").innerHTML="";

}

var curArray=iSourceData.split("\n");

AddTableRow(curTable,curArray.length-1);

var TableCellCount=curTable.rows.item(0).cells.length;

var curSubArray=curArray[0].split("\t");

if (curSubArray.length>TableCellCount-1)

{

document.getElementById("TipLabel").innerHTML="數(shù)據(jù)列數(shù)大于表格列數(shù)";

return;

}

for (var i=0;i

{

var curSubArray=curArray[i].split("\t");

for (var j=0;j

{

curTable.rows[i+curTable.rows.length-curArray.length+1].cells[j+1].innerHTML=curSubArray[j];

}

}}

5.結(jié)束語(yǔ)

本程序設(shè)計(jì)方法,已經(jīng)成功地應(yīng)用于由作者開發(fā)設(shè)計(jì)的《水井分層測(cè)試系統(tǒng)》中,以B/S模式實(shí)現(xiàn)了C/S的數(shù)據(jù)編輯方法。

猜你喜歡
復(fù)制粘貼
帖臉譜
《貓頭鷹》小粘貼
A ski trip to Japan
What Would I Change It To
一種協(xié)同工作環(huán)境中(分布式)的容錯(cuò)和安全數(shù)據(jù)存儲(chǔ)方法