摘要: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下调试通过。
分享到:
相关推荐
本人的备用资料,WORD文档. ASP.NET Web 服务器控件是 ASP.NET 网页上的对象,这些控件在该页被请求时运行并向浏览器呈现标记。...本节还将介绍所有的内置 ASP.NET Web 服务器控件以及如何创建自己的控件。
asp.net web打印控件asp.net web打印控件
Asp.Net服务器端控件,有助于技术人员进行相关的开发,很有用。
实验5 ASP.NET 3.5验证控件.ppt
第12章 ASP.NET Web服务器控件第12章 ASP.NET Web服务器控件第12章 ASP.NET Web服务器控件
ASP.NET常用Web控件 北大青鸟的内部资料,初学者和健忘者的最爱
Asp.Net webform chart控件多种应用实例
1、熟练掌握ASP.NET服务器控件的使用。 2、熟练掌握验证控件的使用。 二、实验内容 1、编写一个Web应用程序Login,该程序用于检查用户登录信息。当用户输入正确的用户名和密码时,显示登录成功的消息。否则,显示...
基于C#语言的ASP.NET 2.0动态网站开发基础教程,课程列表如下: ASP.NET 2.0动态网站开发基础教程(C#) 第01章 ASP.NET2.0基础 Framework Web Form(共32页).ppt ASP.NET 2.0动态网站开发基础教程(C#) 第02章 ...
一个基于ASP.NET的动态加载Flash到Web网页的控件,采用VS2005+C#开发。
基于C#语言的ASP.NET 2.0动态网站开发基础教程,课程列表如下: ASP.NET 2.0动态网站开发基础教程(C#) 第01章 ASP.NET2.0基础 Framework Web Form(共32页).ppt ASP.NET 2.0动态网站开发基础教程(C#) 第02章 ...
基于C#的ASP.NET Web服务器控件简介、说明、操作及实例
asp.net web控件的使用说明,内容很详细,条例很清晰
ASP.NET Web服务器控件.ppt
asp.net,Datalist控件分页显示数据,绑定datatable 带有向前向后翻页
ASP.NET中html控件和web控件的区别
asp.net中GridView控件的各种操作方法,使用大全,附加数据库。包含:GridView导入导出,多层嵌套,表头表尾,分页排序,结合控件,设置属性,增除删改,主键索引...物超所值,亲情放送!~
ASP.NET 3.5标准控件--简易计算器
asp.net c#如何创建Web数据库动态管理系统asp.net c#如何创建Web数据库动态管理系统asp.net c#如何创建Web数据库动态管理系统
分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以分页的DataGrid(asp.net 1.1)和GridView(asp.net 2.0)控件,但其分页功能并不尽如人意,如可定制性差、无法通过Url实现分页功能等,...