ddc
联网
平面设计 画册 VI欣赏 包装 CG-插画 搜索 个人网页 Alexa排名 CSS 建站资源 下载专区 JS特效 品牌服装 服装院校 专题欣赏 SEO 图标欣赏 专题
网站建设 域名注册 网站建设 虚拟主机 广州网站设计 域名注册 广州网站建设 上海网站建设 虚拟主机 广州网页设计 虚拟主机 域名注册 acg王国 ACG玩家 品牌设计 上海网站建设
求创科技
网站建设
中国互联
素材出售
中国设计秀
中资源
当前位置:网络学院首页 >> 编程开发 >> .net >> 基于ASP.NET的WEB动态控件创建

基于ASP.NET的WEB动态控件创建

来源:中国设计秀    作者:    点击:12     加入收藏    发表评论
0
顶一下

    摘要:

    WEB设计中,有很多场合,页面的控件要动态创建甚至只能动态创建,这样可以增加页面的灵活性,但是给程序员带来了一些麻烦,比如要使用动态创建的控件,怎么使用,都是要求解决的问题,本文基于ASP.NET,简要介绍了页面的控件如何动态创建,同时也介绍了怎么使用这些动态创建的控件的方法。

  前言:

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

  1. MICROSOFT控件

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

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

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

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()

 ‘这里设置该LABEL的ID,对于不同的LABEL,必须设置成不同的ID,我这里设置成前缀LBL1加字段名的组合,例如LBL1XLMC等。

 MYLABEL1.ID = "LBL1" & 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
  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

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

  3. 使用动态创建的控件

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

DIM TXT AS TEXTBOX
TXT = ME.FINDCONTROL("TXT" & OLEDSFIELD.TABLES("FIELD").ROWS(I).ITEM("COLUMN_NAME"))

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

  4. 小结

  使用动态创建控件时,难点在于怎么来操作这些动态创建的控件。本文给出了代码,本文例子在.NET 2002+WINDOWS 2000下调试通过。

 

2007-06-26 10:44:00    出处:
Google
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明 | 网站公告 | 友情链接 | 留言 | 旧版入口