真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C#中怎么創(chuàng)建一個復(fù)合控件

本篇文章為大家展示了C# 中怎么創(chuàng)建一個復(fù)合控件,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是成都創(chuàng)新互聯(lián)公司的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個不僅審美在線,而且實用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對成都網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。

構(gòu)建提供豐富的客戶端接口的復(fù)雜Web控件經(jīng)常需要把一些客戶端JavaScript代碼與控件的服務(wù)器端代碼集成到一起。然而,在一些情況下,為了達到某種巧妙的效果而把問題搞得過于復(fù)雜經(jīng)常會破壞控件的內(nèi)部服務(wù)器代碼與生成的客戶端HTML代碼之間的數(shù)據(jù)同步,而當(dāng)進行頁面回寄時這將成為一個問題。在本文中,我將首先構(gòu)建兩個“很酷”的Web控件(都極容易導(dǎo)致這一問題),然后向你展示如何來修改這一“脆弱性”。

當(dāng)前,HTML仍然保持為Web應(yīng)用程序生成階段的主要語言。遺憾的是,它所使用的協(xié)議是無狀態(tài)的,所以必須由Web開發(fā)者自己來處理這種無狀態(tài)特點。通過使用一些架構(gòu)特征,例如回寄機制和ViewState變量,ASP.NET有助于處理這個問題。然而,為了實現(xiàn)某些功能,還需要再作努力,從而借助于回寄事件把Web頁面不斷向服務(wù)器發(fā)出請求的各種技術(shù)結(jié)合起來。

具體地說,我將分析如何使用JavaScript和DHTML存取在客戶端生成的元素。其實,把客戶端和服務(wù)器功能融合到一起要求使用大量的技巧才能達到***用戶體驗效果,而微軟在其ASP.NET校驗控件中就實現(xiàn)了這一點。為了提供一種豐富的客戶端校驗效果,該控件中使用了大量的JavaScript。

作者注:本文假定你對定制Web控件開發(fā)有一個基本了解。因此,我將不再重復(fù)Web控件開發(fā)的基礎(chǔ)內(nèi)容,例如屬性工作原理與風(fēng)格的添加方式

下面,我想向你展示如何構(gòu)建一組很酷的控件,它們具有你在商業(yè)控件中才能看到的優(yōu)秀功能。稍后,我將繼續(xù)展示定制Web控件帶給Web編程的完全封裝優(yōu)點。既然你已經(jīng)了解如何開發(fā)定制Web控件,那么你應(yīng)該知道的一個概念是封裝一個控件所有的功能和行為(就象你在一個標準業(yè)務(wù)對象中所實現(xiàn)的那樣)。在學(xué)習(xí)構(gòu)建具有復(fù)雜行為的控件時,這種封裝將極有用處。

在***個控件中,我將向你展示如何構(gòu)建一個稱為EnhancedListBox的控件。這個控件將擴展ASP.NET的ListBox控件—添加一個頭部和一些重排序按鈕。注意,這是一個直接繼承自常規(guī)ListBox的控件。
之后,我還將向你展示如何創(chuàng)建一個C# 復(fù)合控件—ListMover,它將包含兩個上面提到的EnhancedListBox控件。這個ListMover控件還包含一些允許你從一個列表到另一個列表中移動項的按鈕。

其實,用常規(guī)方法(非面向Web控件的)來實現(xiàn)這種ASP.NET功能也并不困難。首先,你要把一個常規(guī)ListBox控件拖動到你的Web表單上并且使用一些數(shù)據(jù)填充它。

然后,再添加一個標簽用作標題,還有一組按鈕用作重排序按鈕。捕獲這些按鈕的服務(wù)器端事件是ASP.NET中的標準操作;因此,你只需要使用一種方法來取得當(dāng)前選定的項并且根據(jù)用戶點擊的按鈕從而把它放到該列表中的更高或更低的位置即可。例如,你可能編寫如下的代碼實現(xiàn)移動列表中的一項。

i_Index = ListBox1.SelectedIndex;  o_Item = ListBox1.SelectedItem;  ListBox1.Items.RemoveAt(this.SelectedIndex);  i_Index--;  if(i_Index < 0) i_Index = 0;  ListBox1.Items.Insert(i_Index, o_Item);

下面,讓我進行簡單的分析。首先,我保存了當(dāng)前的列表中選定項的索引值與當(dāng)前項。然后,我在當(dāng)前位置刪除該項;之后,在一個較低位置(上一個索引值減1)重新插入該項。這里的邏輯非常簡單,那么為什么我還要說明這個問題呢?

借助于這種常規(guī)的ASP.NET編程方法,Web表單上面的重排序按鈕將會引發(fā)一個實現(xiàn)ListBox中重排序的服務(wù)器端事件。這是由一個到服務(wù)器的回寄觸發(fā)的;因此,這個回寄可能是一次“繁重的”往返,具體要信賴于表單上的具體內(nèi)容及因特網(wǎng)速度。

然而,因為這一代碼實現(xiàn)的是一個標準ASP.NET回寄過程,所以由ASP.NET使用它的ViewState機制來負責(zé)狀態(tài)處理。當(dāng)再次生成頁面時,列表框內(nèi)容按要求的順序正確生成。

當(dāng)然,你也可以使用與此相同的常規(guī)方式在ListMover控件中重新創(chuàng)建這個功能。篇幅所限,我在此省略,只好留待讀者您來實現(xiàn)。這個Web表單上包含一對ListBox,還有一些指示從左向右或從右向左移動的按鈕。這些按鈕的服務(wù)器端事件將從一個ListBox中提取選擇的項,然后把它添加到另一個列表中;反之亦然。如在剛才的例子中所展示的,ViewState在此能夠完好工作以保持這兩個ListBox中的項。

上述內(nèi)容就是C# 中怎么創(chuàng)建一個復(fù)合控件,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


文章標題:C#中怎么創(chuàng)建一個復(fù)合控件
當(dāng)前地址:http://weahome.cn/article/gegjos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部