对象变量 所谓对象变量,指的是变量里面所存放的数据是某个对象存放于内存的哪个地方。我们举个例子:
Dim Cell As HtmlTableCell
上述叙述宣告了一个Cell 变量,里面可以存放HtmlTableCell 控件所在的内存地址。所以我们执行这个叙述时,内存会为我们准备好一个空间,用来等待存放HtmlTableCell 控件的内存地址:
这时候Cell 变量内的内容是空的,因为我们还没有指定一个对象的内存地址给这个变量。要产生一个对象,要使用New 运算子。New 运算子会依照后面所指定的对象类别来产生对象,例如:
Cell=New HtmlTableCell
这个叙述执行完后,会在内存中产生一个HtmlTableCell 对象,然后将对象所在的内存地址传给对象变量Cell:
将新产生对象的内存地址传给变量时,就是宣告要以这个变量名为这个对象的ID 属性,所以我们就可以在程序代码中以指定变量名称的方式控制对象。这就是我们说的对象的参考,所以我们就可以利用下列的方式来控制HtmlTableCell 对象:
Cell.属性="Value" '设定对象的属性 变数=Cell.属性'取出对象的属性 Cell.方法() '执行对象的方法
所以我们要使用指到一个对象型态的变量时, 倘若没有将这个变量指到实际产生出来的对象,那么便不能使用这个对象的属性、方法以及事件。另外以下这两行叙述:
Dim Cell As HtmlTableCell Cell=New HtmlTableCell
可以合并成一行:
Dim Cell As HtmlTableCell = New HtmlTableCell
Collection 集合对象 集合对象可以被我们用来管理许多对象。它可以取得对象的地址,并将对象有条理的收纳管理,让我们以一个集合对象就可以取得其它对象的地址,进而控制对象。我们刚刚了解产生对象的方法,我们再来看看如何将这些对象收纳到集合中进行管理。首先我们观察下列的叙述:
Dim Cell As HtmlTableCell = New HtmlTableCell Dim Row As HtmlTableRow = New HtmlTableRow Cell.InnerText="Cell1" Row.Cells.Add(Cell) Cell = New HtmlTableCell '再产生一个新的HtmlTableCell 对象 Cell.InnerText="Cell2" Row.Cells.Add(Cell)
程序执行完前两行时,会分别产生HtmlTableCell 对象及HtmlTableRow 对象,并将其内存地址指定给Cell 以及Row 这两个对象变量。当程序执行到第四行时,会利用Cells 集合对象之Add方法,将Cell 对象所指到的内存地址存入Row 对象的Cells 集合中;并且指定一个Index 值0,好让我们日后可以指定集合中的这个对象。而当程序执行到第五行时,又产生一个新的HtmlTableCell 对象,并将这个新对象的内存地址给Cell 变量,所以此时Cell 变量所指到的对象已经是另外一个新的HtmlTableCell 对象。程序执行到最后一行时,又再利用Row 对象中的Cells集合之Add 方法,将Cell 变量新指到的内存地址加入集合中,并指定Index 值为1。上列程序代码执行后的内存状况,如下图所示:
此时我们可以利用集合对象的Count 属性,传回集合中总共记录了多少对象的内存地址,例如:
Response.Write(Row.Cells.Count)
这时候浏览器就会印出2,表示有两个对象被集合所管理。我们将对象的地址收纳进集合时,指定了一个Index 值。这个Index 值可以让我们把集合中的项目取出来,只要透过集合对象的Item方法取出即可。如下范例所示:
Dim TmpCell As HtmlTableCell TmpCell = Row.Cells.Item(0)
上述程序代码宣告了名为TmpCell 指到HtmlTableCell 型态对象的对象变量,然后再利用集合对象的Item 方法将集合中Index 为0 的内存地址取出,并指定给变量TmpCell;所以我们就可以透过TmpCell 变量来控制HtmlTableCell 对象。我们将这个观念做个简单的验证:
Dim Cell As HtmlTableCell = New HtmlTableCell Dim Row As HtmlTableRow = New HtmlTableRow Dim TmpCell As HtmlTableCell Cell.InnerText="Cell1" Row.Cells.Add(Cell) Cell = New HtmlTableCell Cell.InnerText="Cell2" Row.Cells.Add(Cell) TmpCell = Row.Cells.Item(0) '传回Index 为0 所记载的内存地址 Response.Write(TmpCell.InnerText) '印出"Cell1" TmpCell = Row.Cells.Item(1) '传回Index 为1 所记载的内存地址 Response.Write(TmpCell.InnerText) '印出"Cell2"
上述程序执行结果印出"Cell1"及"Cell2",验证了集合对象可以管理对象的内存地址,并可以利用Item 方法将内存地址取出。
HtmlTable、HtmlTableRow、HtmlTableCell 控件 HtmlTable 控件可以配合HtmlTableRow 以及HtmlTableCell 控件来动态的产生表格。其关系为:
HtmlTable 控件是由许多列(Row)所组成,而每一列中是由许多储存格(Cell)所组成。所以HtmlTable 控件中有Rows 集合,HtmlTableRow 控件中有Cells 集合。我们依秩序利用HtmlTableRow 中Cells 集合的Add 方法,将HtmlTableCell 控件串成一列(Row)后,再将这一列加到HtmlTable 的Rows 集合中,这样一来表格就大功告成了。这些组成表格的控件都可以设定一些外观属性,我们先来看看HtmlTableCell 控件的语法:
<Td 或Th Id="被程序代码所控制的名称" Runat="Server" Align="Left | Center | Right" BGColor="背景色" BorderClolr="边框颜色" ColSpan="跨栏数" Hight="表格高度" NoWarp="True | False" RowSpan="跨列数" Valign="垂直对齐方式" Width="表格宽度" >储存格内容 </Td 或/Th> >
一般来说我们会利用程序来产生HtmlTableCell 对象,设定好属性之后,我们再加入HtmlTableRow 对象中的Cells 集合中。接下来我们来看看HtmlTableRow 控件的语法:
NoWarp="True | False" RowSpan="跨列数" Valign="垂直对齐方式" Width="表格宽度" >储存格内容 </Td 或/Th> 一般来说我们会利用程序来产生HtmlTableCell 对象,设定好属性之后,我们再加入 HtmlTableRow 对象中的Cells 集合中。接下来我们来看看HtmlTableRow 控件的语法: <Tr Id="被程序代码所控制的名称" Runat="Server" Align="Left | Center | Right" BGColor="背景色" BorderClolr="边框颜色" Hight="表格高度" Cells="Cell 集合" Valign="垂直对齐方式" > <Td>字段内容</Td> <Td>字段内容</Td> </Tr>
利用程序来产生HtmlTableCell 对象后,我们再加入HtmlTableRow 对象中的Cells 集合中。等表格的一列定义好之后,再利用HtmlTable 对象的Rows 集合,将表格的列加入集合中。我们来看看HtmlTable 控件的语法:
<Table Id="被程序代码所控制的名称" Runat="Server" Align="Left | Center | Right" BGColor="背景色" BorderClolr="边框颜色" CellPadding="像素" CellSpacing="像素" Hight="表格高度" Rows="Row 集合" Width="表格宽度" > <Tr><Td><Td></Tr> <Tr><Td><Td></Tr> </Table>
使用范例: 下列范例利用表格控件印出九九表:
<Html> <Table Id="Table1" Runat="Server" Border="1"/> <Form Runat="Server"> <Button Id="Button1" Runat="Server" OnServerClick="Button1_Click" InnerText="请按我"/> </Form > <Script Language="VB" Runat="Server" ID=Script1> Sub Button1_Click(Sender As Object, e As EventArgs) Dim Cell As HtmlTableCell Dim Row As HtmlTableRow Dim X, Y As Short For X=1 To 9 Step 1 Cell=New HtmlTableCell For Y=1 To 9 Step 1 Cell.InnerHtml+=CStr(X) & " * " & CStr(Y) & " = " & CStr(X * Y) If Y<>9 Then Cell.InnerHtml+="<br>" Next Y If X=1 Or X=4 Or X=7 Then Row=New HtmlTableRow Row.Cells.Add(Cell) If X=3 Or X=6 Or X=7 Then Table1.Rows.Add(Row) Next X End Sub </SCRIPT> </Html>
|