国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

結(jié)合ASP.NET與JavaScript開發(fā)電子沙盤

2019-11-18 16:55:44
字體:
供稿:網(wǎng)友

  摘 要 在基于B/S結(jié)構(gòu)的網(wǎng)絡(luò)信息系統(tǒng)開發(fā)中,結(jié)合asp.net與客戶端的javaScript腳本, 開發(fā)能與數(shù)據(jù)庫進行交互的電子沙盤。沙盤中圖標的參數(shù)存取由客戶端與服務(wù)器交互完成,圖標的移動和圖標的信息瀏覽依靠客戶端實現(xiàn)。文章結(jié)合系統(tǒng)開發(fā)實例,詳細闡述了這一方法的實現(xiàn)過程。

  關(guān)鍵詞 ASP.NET Javascript 電子沙盤

  引 言

  ASP.NET技術(shù)是用于Web開發(fā)的全新框架,它完全基于模塊與組件,給Web開發(fā)人員提供更多的靈活性,是創(chuàng)建Web應(yīng)用程序的有效工具。ASP.NET特別適用于開發(fā)動態(tài)的Web站點,使網(wǎng)頁與用戶之間不僅僅是顯示和瀏覽的關(guān)系,而且還是動態(tài)交互的關(guān)系。大部份的交互任務(wù)都可由ASP.NET的服務(wù)器端代碼來完成。筆者為某單位開發(fā)的B/S結(jié)構(gòu)網(wǎng)絡(luò)信息系統(tǒng),除一般功能外,還需要特別設(shè)計地理模塊。因其眾多的下屬子單位的地理位置會比較頻繁地發(fā)生變動,而業(yè)務(wù)工作與地理位置的配置又有著重要關(guān)系,為此,要在系統(tǒng)中引入基于數(shù)據(jù)庫支持的電子沙盤。使各級用戶按權(quán)限查看和配置子單位在地圖上分布。

  電子沙盤的基本原理是在以地圖為背景的網(wǎng)頁中生成多個可以移動的圖標,每一個圖標代表一個子單位。但在Web上僅靠ASP.NET來實現(xiàn)沙盤功能是比較困難的,因為它對交互性提出了更高的要求。這主要體現(xiàn)在兩個方面:一是沙盤與數(shù)據(jù)庫服務(wù)器的交互,這主要體現(xiàn)在沙盤數(shù)據(jù)在數(shù)據(jù)庫中的存取;二是沙盤與用戶的交互,這主要體現(xiàn)在用戶在地圖中移動圖標(鼠標拖動動作)以及瀏覽圖標的信息(鼠標點擊動作)兩個方面。在實際操作中,沙盤與用戶的交互是比較頻繁的,如果每一次動作都要求瀏覽器和服務(wù)器建立一次往返行程,必然會受到網(wǎng)速、服務(wù)器性能等因素的制約,從而延長用戶操作的等待時間,降低沙盤的實用性。

  為此,要引入JavaScript技術(shù),來滿足這種實時交互的需求。JavaScript是一種基于對象(Object)和事件驅(qū)動(Event Driven)并具有安全性能的腳本語言。JavaScript腳本嵌入在網(wǎng)頁中,運行時JavaScript代碼和網(wǎng)頁一起下載到瀏覽器。當(dāng)用戶的一些操作不涉及到數(shù)據(jù)存取時,如移動圖標與瀏覽圖標信息這兩項主要的沙盤操作,就可以由JavaScript腳本來實現(xiàn),從而使用戶、瀏覽器、服務(wù)器之間的三層交互變成了用戶、瀏覽器之間的兩層交互,有效提高網(wǎng)頁反應(yīng)的快速性和靈活性。

  設(shè)計思路

  本文所述的信息系統(tǒng),以Windows 2000 Server+IIS5.0+.NET作為平臺,采用ASP.NET+C#.NET構(gòu)造程序框架, SQL Server 2000為后臺數(shù)據(jù)庫。針對該單位分為總部—分區(qū)—子單位三層結(jié)構(gòu),按行政級別規(guī)定了不同的權(quán)限:總部級用戶具有對全部子單位的瀏覽權(quán)和調(diào)配權(quán),分區(qū)級用戶具有對本分區(qū)子單位的瀏覽權(quán)和調(diào)配權(quán),子單位具有地理配置權(quán)。

  為盡量減少客戶端與服務(wù)器的交互次數(shù),電子沙盤的運行過程應(yīng)分為三個步驟進行:第一步是在網(wǎng)頁加載時,Web服務(wù)器從數(shù)據(jù)庫服務(wù)器中提取圖標參數(shù)(坐標值與基本信息),將JavaScript代碼和網(wǎng)頁一起下載到客戶端;第二步是由JavaScript腳本負責(zé)執(zhí)行沙盤與用戶的交互(配置圖標與瀏覽圖標信息);第三步是在用戶選擇保存設(shè)置時,Web服務(wù)器接收來自客戶端的坐標值等參數(shù),并賦值給數(shù)據(jù)庫服務(wù)器的存儲過程,由存儲過程執(zhí)行數(shù)據(jù)的保存。

  程序設(shè)計

  1、網(wǎng)頁加載

  Web服務(wù)器根據(jù)用戶ID從數(shù)據(jù)庫中提取其所屬的圖標參數(shù)(坐標值和基本信息),再根據(jù)坐標值將圖標定位在地圖中,同時將圖標基本信息寫入網(wǎng)頁代碼。在網(wǎng)頁加載完畢以后,生成的圖標會配置在地圖上的指定位置,且附帶了基本信息。節(jié)選程序如下:

PRivate void Page_Load(object sender, System.EventArgs e) //初始化
{
if (!IsPostBack) //程序是否是第一次執(zhí)行
{
string strConn=ConfigurationSettings.AppSettings["ConnectionString"];
SqlConnection cn=new SqlConnection(strConn);
SqlCommand cm9=new SqlCommand("sp_sketchmap",cn); //提取子單位名稱及坐標值
cm9.CommandType=CommandType.StoredProcedure;
cm9.Parameters.Add("@unitid",SqlDbType.VarChar,50); //使用者單位編碼
cm9.Parameters["@unitid"].Value=session["unitid"].ToString();
cm9.Parameters.Add("@D1",SqlDbType.VarChar,50); //1號子單位名稱
cm9.Parameters["@D1"].Direction=ParameterDirection.Output;
cm9.Parameters.Add("@D1A",SqlDbType.Int); //1號子單位橫坐標
cm9.Parameters["@D1A"].Direction=ParameterDirection.Output;
cm9.Parameters.Add("@D1B",SqlDbType.Int); //1號子單位縱坐標
cm9.Parameters["@D1B"].Direction=ParameterDirection.Output;
cm9.Parameters.Add("@D1C",SqlDbType.VarChar,100); //1號子單位基本信息
cm9.Parameters["@D1C"].Direction=ParameterDirection.Output;
……

  2、客戶端操作

  ASP.NET中的Web控件沒有坐標屬性,因此它們不能在網(wǎng)頁中移動。可以采用HTML控件中的Label控件(div),把它當(dāng)成一個可以移動的層來使用,在這個層上嵌入一個Image控件,兩者合并在一起即可作為活動的圖標。

  編寫的JavaScript腳本主要有兩類:一類是拖動動作,即圖標可以被鼠標拖動到地圖上的某一位置;另一類是點擊動作,在圖標被選中狀態(tài)下,單擊鼠標的右鍵可以顯現(xiàn)圖標的基本信息。節(jié)選程序如下:

<script language="JavaScript"> // JavaScript腳本
……
function dragIt(evt) // 鼠標拖動動作
{
 ……
 if (selectedObj) {
  shiftTo(selectedObj, (window.event.clientX - offsetX), (window.event.clientY - offsetY))
  document.forms(0).TextBox1.value=window.event.clientX – offsetX
  document.forms(0).TextBox2.value=window.event.clientY – offsetY
  document.forms(0).TextBox3.value=window.event.srcElement.id
 }
}
……
function rightclick(){ //鼠標右鍵點擊動作
 if (event.button==2){
  linkex.innerHTML=document.forms(0).TextBoxD1C.value linkex.style.posTop=plane1.style.posTop+20
  linkex.style.posLeft=plane1.style.posLeft+20
  linkex.style.backgroundColor="Pink"
  linkex.style.visibility="visible"
 }
}
</script>

  3、坐標值保存

  在用戶完成圖標的配置后,可選擇保存設(shè)置,這一動作由Web控件Button按鈕的Click事件激發(fā)。Web服務(wù)器將用戶ID、圖標ID和坐標值賦傳送給數(shù)據(jù)庫服務(wù)器的存儲過程,由存儲過程將數(shù)據(jù)保存到數(shù)據(jù)庫表中。節(jié)選程序如下:

private void Button1_Click(object sender, System.EventArgs e)
{
 string strConn=ConfigurationSettings.AppSettings["ConnectionString"];
 SqlConnection cn=new SqlConnection(strConn);
 SqlCommand cm9=new SqlCommand("sp_sketchmap_modify",cn); //保存子單位坐標
 cm9.CommandType=CommandType.StoredProcedure;
 cm9.Parameters.Add("@unitid",SqlDbType.VarChar,50); //使用者單位編碼
 cm9.Parameters["@unitid"].Value=Session["unitid"].ToString();
 cm9.Parameters.Add("@D1",SqlDbType.VarChar,50); 1號子單位名稱
 cm9.Parameters["@D1"].Value=TextBoxD1.Text.Trim();
 cm9.Parameters.Add("@D1A",SqlDbType.Int); 1號子單位橫坐標
 cm9.Parameters["@D1A"].Value=Int32.Parse(TextBoxD1A.Text.Trim());
 cm9.Parameters.Add("@D1B",SqlDbType.Int); //1號子單位縱坐標   
 cm9.Parameters["@D1B"].Value=Int32.Parse(TextBoxD1B.Text.Trim());
 ……
 cm9.Connection.Open();
 cm9.ExecuteNonQuery();
 cm9.Connection.Close();
……

  結(jié)束語

  電子沙盤的另外一個功能是導(dǎo)入地圖,當(dāng)?shù)貓D的情況發(fā)生變化時,可以及時進行替換,為保證坐標的準確性,要求導(dǎo)入地圖要與原有地圖的大小相同。因方法較為簡單,不再贅述。

  本文所設(shè)計的電子沙盤開發(fā)方法,已成功應(yīng)用于B/S結(jié)構(gòu)的網(wǎng)絡(luò)信息系統(tǒng),實際運行表明該方法是十分可靠與實用的。如果要拓展其功能,還可以在此基礎(chǔ)上做更進一步的修改和完善。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 保山市| 南丹县| 珠海市| 河源市| 温州市| 江川县| 黔南| 南溪县| 武乡县| 桐梓县| 白山市| 铜梁县| 邢台县| 汝南县| 府谷县| 皮山县| 襄垣县| 庆城县| 天柱县| 镇远县| 茌平县| 苍山县| 朝阳市| 包头市| 丰原市| 师宗县| 独山县| 固镇县| 读书| 江北区| 汉沽区| 增城市| 奇台县| 启东市| 湘乡市| 岳阳市| 信宜市| 松原市| 揭东县| 文成县| 礼泉县|