明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

基于ASP.NET的Web動(dòng)態(tài)控件創(chuàng)建

[摘要]摘要:web設(shè)計(jì)中,有很多場(chǎng)合,頁(yè)面的控件要?jiǎng)討B(tài)創(chuàng)建甚至只能動(dòng)態(tài)創(chuàng)建,這樣可以增加頁(yè)面的靈活性,但是給程序員帶來(lái)了一些麻煩,比如要使用動(dòng)態(tài)創(chuàng)建的控件,怎么使用,都是要求解決的問(wèn)題,本文基于asp.net,簡(jiǎn)要介紹了頁(yè)面的控件如何動(dòng)態(tài)創(chuàng)建,同時(shí)也介紹了怎么使用這些動(dòng)態(tài)創(chuàng)建的控件的方法。   前言: ...

  摘要:web設(shè)計(jì)中,有很多場(chǎng)合,頁(yè)面的控件要?jiǎng)討B(tài)創(chuàng)建甚至只能動(dòng)態(tài)創(chuàng)建,這樣可以增加頁(yè)面的靈活性,但是給程序員帶來(lái)了一些麻煩,比如要使用動(dòng)態(tài)創(chuàng)建的控件,怎么使用,都是要求解決的問(wèn)題,本文基于asp.net,簡(jiǎn)要介紹了頁(yè)面的控件如何動(dòng)態(tài)創(chuàng)建,同時(shí)也介紹了怎么使用這些動(dòng)態(tài)創(chuàng)建的控件的方法。

  前言:

  自從Microsoft在2000年推出了.net framework以來(lái),給基于internet編程的程序員帶來(lái)了巨大的福音,.net framework大大簡(jiǎn)化了web頁(yè)面設(shè)計(jì)的繁雜,可見(jiàn)即可得的頁(yè)面效果大大簡(jiǎn)化了頁(yè)面設(shè)計(jì)程序員的工作任務(wù),code behind技術(shù)將頁(yè)面與代碼分離,減少了web頁(yè)面的無(wú)序狀態(tài),其中大量可以復(fù)用的控件可以無(wú)縫的被瀏覽器使用,由于互聯(lián)網(wǎng)上95%的瀏覽器均是Microsoft的Internet Explorer,程序員大可以放心的使用這些控件而不用擔(dān)心瀏覽器的兼容性,本文從Microsoft的.net和com控件開(kāi)始,給出具體例子說(shuō)明如何在頁(yè)面上動(dòng)態(tài)創(chuàng)建控件,以及怎么來(lái)使用這些動(dòng)態(tài)創(chuàng)建的控件。其中具體使用的語(yǔ)言是vb.net。

  1. Microsoft控件

  目前用于瀏覽器的動(dòng)態(tài)數(shù)據(jù)瀏覽方式主要有以下兩種,(1).使用java applet。(2).使用可以在瀏覽器中運(yùn)用的控件。兩種方法各有利弊,使用java applet,頁(yè)面執(zhí)行較慢,編程復(fù)雜,可復(fù)用性不大,這種方式現(xiàn)在使用較少;越來(lái)越多的程序員較傾向于使用控件。其中我們?cè)趙eb中大多數(shù)時(shí)候是使用到.net 的web control和html control以及一些數(shù)據(jù)操作控件。

  一般的,在web設(shè)計(jì)中,通常使用拖拽的方式,將空間放置到頁(yè)面,然后設(shè)置屬性就可以了,然后再后臺(tái)程序中編程使用就可以了。這種方式操作起來(lái)很方便,可見(jiàn)即可得,同時(shí)引用這些放置好的控件也很方便,但是在有些情況下,我們卻不得不要?jiǎng)討B(tài)創(chuàng)建控件,比如對(duì)一一個(gè)數(shù)據(jù)庫(kù)中的某一些字段,對(duì)于不同身份的用戶,見(jiàn)到的字段數(shù)目是不一樣的;還有就是對(duì)于不同身份的用戶對(duì)于某一控件的使能狀態(tài)是不一樣的,我們不能再頁(yè)面設(shè)計(jì)時(shí)采用一個(gè)標(biāo)準(zhǔn),最好的方式就是動(dòng)態(tài)創(chuàng)建控件,對(duì)于不同的情況,通過(guò)程序來(lái)控制,放置在頁(yè)面上的控件的數(shù)目也通過(guò)程序來(lái)控制。然后通過(guò)程序來(lái)引用這些創(chuàng)建好的控件。
  2. 創(chuàng)建控件

  對(duì)于程序員來(lái)說(shuō),用例子說(shuō)話是最好的方式來(lái)提供解決方案,我將在頁(yè)面上動(dòng)態(tài)的放置一些標(biāo)簽(label)和文本框(textbox),這些文本框里頭放置的是從dataset取到的數(shù)據(jù),同時(shí)我把這些文本框放置到一個(gè)表格的相應(yīng)單元格里,可以實(shí)現(xiàn)有序的放置,首先在頁(yè)面添加一個(gè)table。然后根據(jù)需要?jiǎng)?chuàng)建不同的列數(shù)和行數(shù),如下為動(dòng)態(tài)創(chuàng)建這些文本框的代碼:

Dim i As Integer
For i = 0 To IntRowCount - 1
 Dim r As TableRow = New TableRow()
 Dim c1 As TableCell = New TableCell()
 Dim myLabel1 As Label = New Label()

 ‘這里設(shè)置該label的ID,對(duì)于不同的label,必須設(shè)置成不同的ID,我這里設(shè)置成前綴lbl1加字段名的組合,例如lbl1xlmc等。

 myLabel1.ID = "Lbl1" & Trim(OleDsField.Tables("Field").Rows(i).Item("column_name")).ToString()
 
 ‘下面的條件語(yǔ)句是為了判斷數(shù)據(jù)庫(kù)中在字段的值是否為空,根據(jù)條件賦予label不同的文本。

 If OleDsField.Tables("Field").Rows(i).Item("column_title").GetType.ToString = "System.DBNull" Then
  myLabel1.Text = ""
 Else
  myLabel1.Text = Trim(OleDsField.Tables("Field").Rows(i).Item("column_title"))
 End If

 c1.Controls.Add(myLabel1)
 r.Cells.Add(c1)
 Dim c2 As TableCell = New TableCell()
 Dim mytextbox As TextBox = New TextBox()
 mytextbox.ID = "Txt" & Trim(OleDsField.Tables("Field").Rows(i).Item("column_name")).ToString()
 If OleDsResult.Tables("Result").Rows(0).Item(i).GetType.ToString = "System.DBNull" Then
  mytextbox.Text = ""
 Else
  mytextbox.Text = Trim(OleDsResult.Tables("Result").Rows(0).Item(i))
 End If

 If Trim(OleDsField.Tables("Field").Rows(i).Item("column_enable")) = "是" Then
  mytextbox.Enabled = True
 Else
  mytextbox.Enabled = False
 End If

 c2.Controls.Add(mytextbox)
 r.Cells.Add(c2)
 Table3.Rows.Add(r)
Next

  這樣就成功地添加了兩列到表里,至于行數(shù)由變量IntRowCount決定,其中IntRowCount為取數(shù)據(jù)庫(kù)時(shí)得到的記錄的行數(shù)

  3. 使用動(dòng)態(tài)創(chuàng)建的控件

  使用這些控件時(shí),首先必須要知道這些控件的ID,對(duì)于上文所說(shuō)的這些控件,由于ID名稱不定,使用時(shí)必須也要根據(jù)條件來(lái)使用。比如我要找到相應(yīng)的文本框的ID,就用以下代碼可以實(shí)現(xiàn):

Dim txt As TextBox
txt = Me.FindControl("txt" & OleDsField.Tables("Field").Rows(i).Item("column_name"))

  這樣就找到了要使用的文本框的這個(gè)控件,然后就可以使用相應(yīng)功能。

  4. 小結(jié)

  使用動(dòng)態(tài)創(chuàng)建控件時(shí),難點(diǎn)在于怎么來(lái)操作這些動(dòng)態(tài)創(chuàng)建的控件。本文給出了代碼,本文例子在.net 2002+windows 2000下調(diào)試通過(guò)。