基于asp.net的web页面动态控件创建以及使用

如题所述

第1个回答  2022-10-30
  摘要 web设计中 有很多场合 页面的控件要动态创建甚至只能动态创建 这样可以增加页面的灵活性 但是给程序员带来了一些麻烦 比如要使用动态创建的控件 怎么使用 都是要求解决的问题 本文基于asp net 简要介绍了页面的控件如何动态创建 同时也介绍了怎么使用这些动态创建的控件的方法

   前言

  自从Microsoft在 年推出了 net framework以来 给基于internet编程的程序员带来了巨大的福音 net framework大大简化了web页面设计的繁杂 可见即可得的页面效果大大简化了页面设计程序员的工作任务 code behind技术将页面与代码分离 减少了web页面的无序状态 其中大量可以复用的控件可以无缝的被浏览器使用 由于互联网上 %的浏览器均是Microsoft的Internet Explorer 程序员大可以放心的使用这些控件而不用担心浏览器的兼容性 本文从Microsoft的 net和控件开始 给出具体例子说明如何在页面上动态创建控件 以及怎么来使用这些动态创建的控件 其中具体使用的语言是vb net

   Microsoft控件

  目前用于浏览器的动态数据浏览方式主要有以下两种 ( ) 使用java applet ( ) 使用可以在浏览器中运用的控件 两种方法各有利弊 使用java applet 页面执行较慢 编程复杂 可复用性不大 这种方式现在使用较少 越来越多的程序员较倾向于使用控件 其中我们在web中大多数时候是使用到 net 的web control和 control以及一些数据操作控件

  一般的 在web设计中 通常使用拖拽的方式 将空间放置到页面 然后设置属性就可以了 然后再后台程序中编程使用就可以了 这种方式操作起来很方便 可见即可得 同时引用这些放置好的控件也很方便 但是在有些情况下 我们却不得不要动态创建控件 比如对一一个数据库中的某一些字段 对于不同身份的用户 见到的字段数目是不一样的 还有就是对于不同身份的用户对于某一控件的使能状态是不一样的 我们不能再页面设计时采用一个标准 最好的方式就是动态创建控件 对于不同的情况 通过程序来控制 放置在页面上的控件的数目也通过程序来控制 然后通过程序来引用这些创建好的控件

   创建控件

对于程序员来说 用例子说话是最好的方式来提供解决方案 我将在页面上动态的放置一些标签(label)和文本框(textbox) 这些文本框里头放置的是从dataset取到的数据 同时我把这些文本框放置到一个表格的相应单元格里 可以实现有序的放置 首先在页面添加一个table 然后根据需要创建不同的列数和行数 如下为动态创建这些文本框的代码

Dim i As Integer

For i = To IntRowCount

Dim r As TableRow = New TableRow()

Dim c As TableCell = New TableCell()

Dim myLabel As Label = New Label()

这里设置该label的ID 对于不同的label 必须设置成不同的ID 我这里设置成前缀lbl 加字段名的组合 例如lbl xlmc等

myLabel ID = Lbl & Trim(OleDsField Tables( Field ) Rows(i) Item( column_name )) ToString()

下面的条件语句是为了判断数据库中在字段的值是否为空 根据条件赋予label不同的文本

If OleDsField Tables( Field ) Rows(i) Item( column_title ) GetType ToString = System DBNull Then

myLabel Text =

Else

myLabel Text = Trim(OleDsField Tables( Field ) Rows(i) Item( column_title ))

End If

c Controls Add(myLabel )

r Cells Add(c )

Dim c 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( ) Item(i) GetType ToString = System DBNull Then

mytextbox Text =

Else

mytextbox Text = Trim(OleDsResult Tables( Result ) Rows( ) Item(i))

End If

If Trim(OleDsField Tables( Field ) Rows(i) Item( column_enable )) = 是 Then

mytextbox Enabled = True

Else

mytextbox Enabled = False

End If

c Controls Add(mytextbox)

r Cells Add(c )

Table Rows Add(r)

Next

  这样就成功地添加了两列到表里 至于行数由变量IntRowCount决定 其中IntRowCount为取数据库时得到的记录的行数

   使用动态创建的控件

  使用这些控件时 首先必须要知道这些控件的ID 对于上文所说的这些控件 由于ID名称不定 使用时必须也要根据条件来使用 比如我要找到相应的文本框的ID 就用以下代码可以实现

Dim txt As TextBox

txt = Me FindControl( txt & OleDsField Tables( Field ) Rows(i) Item_

( column_name ))

  这样就找到了要使用的文本框的这个控件 然后就可以使用相应功能

    小结

lishixinzhi/Article/program/net/201311/15782

相似回答