测试笔记
如何在aspx.vb中调用ascx
Noel 发表于 2007-09-06 16:59:24
<%@import namespace="system.data"%>
<%@import namespace="system.data.sqlclient"%>
<%@ register tagprefix="bookpub" tagname="getdsn" src="get_dsn.ascx"%>
<html>
<head>
<title>pagelet</title>
<script language=vb runat=server>
sub page_load(sender as object,e as eventargs)
if not page.ispostback then
dim objconn as sqlconnection
dim objcomm as sqldataadapter
dim objds as dataset
dim strsql,strdsn as string
strsql="select * from employ"
strdsn=pagelet1.get_dsn
objconn=new sqlconnection(strdsn)
objcomm=new sqldataadapter(strsql,objconn)
objds=new dataset()
objcomm.fill(objds,"employ")
datagrid1.datasource=objds.tables(0).defaultview
datagrid1.databind()
end if
end sub
</script>
</head>
<body >
<form runat="server">
<bookpub:getdsn id="pagelet1" bolsql=true runat=server/>
<asp:DataGrid ID="datagrid1" Runat=server/>
</form>
</body>
</html>
------------------------------------------------------------------
上面的代码我想改成codebehind窗体。并且在codebehind的窗体调用get_dsn.ascx文件,但是,不知道
<%@ register tagprefix="bookpub" tagname="getdsn" src="get_dsn.ascx"%>
如何在.aspx.vb中包含,它的格式是如何的?
答案一
<%@ register tagprefix="bookpub" tagname="getdsn" src="get_dsn.ascx"%>
不用动
方法:
在aspx.vb文件中class下
1、加一个类型为get_dsn的变量pagelet1
2、在if not page.ispostback then前加
pagelet1=(get_dsn)Me.FindControl("pagelet1")
后面就正常了
不过VB.net不熟
pagelet1=(get_dsn)Me.FindControl("pagelet1")
-------强制类型为get_dsn
答案二
Dim Mygetdsn As New getdsn
Mygetdsn = Me.FindControl("pagelet1")
步骤一: 把ascx控件拖入设计窗口,然后转入html模式,保留定义
如果你需要多个ascx的话,请全部拖入。
但是把相应的内容删除。(因为我们需要动态加载)
在需要填入控件的地方,放个容器,比如td,并设定在服务器端运行
如
<TD id="tdpan" runat=server></TD>
2:动态调用
UserControl myusercontrol = (UserControl) LoadControl ("../includes/pageNavigater.ascx") ;
Type myusertype = myusercontrol.GetType();
//下面是给ascx赋值
PropertyInfo myuserinfo1 = myusertype.GetProperty("RelatedDatagrid");//) .GetProperty("RelatedDatagrid");
myuserinfo1.SetValue(myusercontrol,gridhwcy ,null);
PropertyInfo mypassinfo = myusertype.GetProperty("torefresh");
mypassinfo.SetValue(myusercontrol,true,null );
PropertyInfo myuserdatasource = myusertype.GetProperty("RelatedDataSource");
myuserdatasource.SetValue(myusercontrol,dv,null);
tdpan.Controls.Clear();
tdpan.Controls.Add(myusercontrol);
.net 数学函数 字符函数 转换函数
Noel 发表于 2007-09-06 16:51:18
Abs 已重载。返回指定数字的绝对值。
Acos 返回余弦值为指定数字的角度。
Asin 返回正弦值为指定数字的角度。
Atan 返回正切值为指定数字的角度。
Atan2 返回正切值为两个指定数字的商的角度。
Ceiling 返回大于或等于指定数字的最小整数。
Cos 返回指定角度的余弦值。
Cosh 返回指定角度的双曲余弦值。
Exp 返回 e 的指定次幂。
Floor 返回小于或等于指定数字的最大整数。
IEEERemainder 返回一指定数字被另一指定数字相除的余数。
Log 已重载。返回指定数字的对数。
Log10 返回指定数字以 10 为底的对数。
Max 已重载。返回两个指定数字中较大的一个。
Min 已重载。返回两个数字中较小的一个。
Pow 返回指定数字的指定次幂。
Round 已重载。返回最接近指定值的数字。
Sign 已重载。返回表示数字符号的值。
Sin 返回指定角度的正弦值。
Sinh 返回指定角度的双曲正弦值。
Sqrt 返回指定数字的平方根。
Tan 返回指定角度的正切值。
Tanh 返回指定角度的双曲正切值。
使用数学函数
System.Math 类中定义了用于数学计算的函数。Math 类包括三角函数、对数函数和其他常用数学函数。下列函数是在 System 名称空间的 Math 类中定义的函数。
注意:要使用这些函数,请通过在源代码顶部添加以下代码将 System.Math 名称空间导入到项目中:
Imports System.Math
Abs
Abs 函数返回指定数值的绝对值。
Abs 示例:
本示例使用 Math 类的 Abs 方法来计算一个数值的绝对值。
' Code will not compile unless it is put in a Sub or in a Function.
Dim MyNumber As Double
MyNumber = Abs(50.3) ' Returns 50.3.
MyNumber = Abs(-50.3) ' Returns 50.3.
Atan
Atan 函数返回包含角度的 Double 值。该角度的正切值是指定的数值。返回值为正表示角度在 X 轴的逆时针方向上。返回值为负表示顺时针角度。将返回值乘以 180/Pi (π) 可以从弧度转换为角度。
Atan 示例:
本示例使用 Math 类的 Atan 方法来计算 Pi 值。
' Code is not compiled unless it is put in a Sub or in a Function.
Dim pi As Double
pi = 4 * Atan(1) ' Calculate the value of pi.
Cos
Cos 函数以弧度表示的角度作为参数,然后返回一个 Double 值,表示指定角度的余弦值。
Cos 示例:
本示例使用 Math 类的 Cos 方法返回角度的余弦值。
' Code is not compiled unless it is put in a Sub or in a Function.
Dim MyAngle, MySecant As Double
MyAngle = 1.3 ' Define angle in radians.
MySecant = 1 / Cos(MyAngle) ' Calculate secant.
Exp
Exp 函数返回一个 Double 值,包含 e(自然对数的底)的指定乘幂。使用 Pow 方法可计算其他底的乘幂。Exp 是 Log 的逆运算。
Exp 示例:
本示例使用 Math 类的 Exp 方法返回 e 的乘幂。
' Code is not compiled unless it is put in a Sub or in a Function.
Dim MyAngle, MyHSin As Double
' Define angle in radians.
MyAngle = 1.3
' Calculate hyperbolic sine.
MyHSin = (Exp(MyAngle) - Exp(-1 * MyAngle)) / 2
Log
Log 函数返回一个 Double 值,包含一个指定数值的对数。该方法已重载,可以返回指定数值的自然(底数 e)对数或指定数值的指定底对数。
Log 示例:
本示例使用 Math 类的 Log 方法返回一个数值的自然对数。
' Code is not compiled unless it is put in a Sub or in a Function.
Dim MyAngle, MyLog As Double
' Define angle in radians.
MyAngle = 1.3
' Calculate inverse hyperbolic sine.
MyLog = Log(MyAngle + Sqrt(MyAngle * MyAngle + 1))
Round
Round 函数返回一个 Double 值,包含与指定值最接近的数值。其他 Round 函数可用作内部类型的方法,如 Decimal.Round 方法。
Round 示例:
本示例使用 Math 类的 Round 方法将一个数值四舍五入为最接近的整数。
' Code is not compiled unless it is put in a Sub or in a Function.
Dim MyVar1 As Double = 2.8
Dim MyVar2 As Double
MyVar2 =Round(MyVar1) ' Returns 3.
Sign
Sign 函数返回一个指示某个数值的正负号的整数值。下面的表格显示了函数及其返回值的输入参数:
|
指定数 |
返回值 |
|
正数 |
1 |
|
负数 |
-1 |
|
零 |
0 |
Sign 示例:
本示例使用 Math 类的 Sign 方法确定一个数值的正负号。
' Code is not compiled unless it is put in a Sub or in a Function.
Dim MyVar1, MyVar2, MyVar3 As Double
Dim MySign As Integer
MyVar1 = 12
MyVar2 = -2.4
MyVar3 = 0
MySign = Sign(MyVar1) ' Returns 1.
MySign = Sign(MyVar2) ' Returns -1.
MySign = Sign(MyVar3) ' Returns 0.
Sin
Sin 函数以弧度表示的角度作为参数,然后返回一个 Double 值,指定该角度的正弦值。
Sin 示例:
本示例使用 Math 类的 Sin 方法返回一个角度的正弦值。
' Code is not compiled unless it is put in a Sub or in a Function.
Dim MyAngle, MyCosecant As Double
MyAngle = 1.3 ' Define angle in radians.
MyCosecant = 1 / Sin(MyAngle) ' Calculate cosecant.
Sqrt
Sqrt 函数返回一个 Double 值,指定一个指定数值的平方根。
Sqrt 示例:
本示例使用 Math 类的 Sqrt 方法计算一个数值的平方根。
' Code is not compiled unless it is put in a Sub or in a Function.
Dim MySqr As Double
MySqr = Sqrt(4) ' Returns 2.
MySqr = Sqrt(23) ' Returns 4.79583152331272.
MySqr = Sqrt(0) ' Returns 0.
MySqr = Sqrt(-4) ' Returns NaN (not a number).
Tan
Tan 函数返回一个 Double 值,包含指定角度的正切值。Tan 函数以弧度表示的角度作为参数。当指定的角度是 NaN、NegativeInfinity 或 PositiveInfinity 时,该方法将返回 NaN。
注意:乘以 π/180 可以将角度转换为弧度。
Tan 示例:
本示例使用 Math 类的 Tan 方法返回一个角度的正切值。
' Code is not compiled unless it is put in a Sub or in a Function.
Dim MyAngle, MyCotangent As Double
MyAngle = 1.3 ' Define angle in radians.
MyCotangent = 1 / Tan(MyAngle) ' Calculate cotangent.
将一个值从一种数据类型更改为另一种数据类型的过程称为转换。转换或者是扩大或者是收缩,这取决于所涉及的类型的数据容量。公共语言运行库支持扩大转换和收缩转换两种。例如,以 32 位有符号整数形式表示的值可以转换为 64 位有符号整数。这是一个扩大转换的示例。相反的转换(从 64 位到 32 位)是一个收缩转换的示例。使用扩大转换信息永远不会丢失。但是,使用收缩转换信息可能会丢失。
以下是 Visual Basic .NET 中定义的类型转换函数:
CBool
CBool 函数用于将字符串表达式或数值表达式转换为 Boolean 值。当表达式计算为一个非零值时,CBool 函数将返回 True。否则,该函数返回 False。
CBool 示例:
Dim A, B, C As Integer
Dim Check As Boolean
A = 5
B = 5
Check = CBool(A = B) ' Check is set to True.
C = 0
Check = CBool(C) ' Check is set to False.
CByte
CByte 函数将指定数值转换为字节。输入参数必须是 0 到 255 之间的一个数值。否则,将出现 System.OverflowException。
CByte 示例:
Dim MyDouble As Double
Dim MyByte As Byte
MyDouble = 125.5678
MyByte = CByte(MyDouble) ' MyByte is set to 126.
CChar
CChar 函数仅转换指定字符串的第一个字符。CChar 的输入参数必须是数据类型的字符串。无法使用 CChar 将数值转换为字符,因为 CChar 无法接受 Numeric 数据类型。
CChar 示例:
本示例使用 CChar 函数将字符串表达式的第一个字符转换为 Char 类型。
Dim MyString As String
Dim MyChar As Char
MyString = "BCD" ' CChar converts only the first character of the string.
MyChar = CChar(MyString) ' MyChar is set to "B".
CDate
CDate 接受日期和时间的任何有效表示方式,然后将其转换为 Date 值。
CDate 示例:
本示例使用 CDate 函数将字符串转换为 Date 值。
Dim MyDateString, MyTimeString As String
Dim MyDate, MyTime As Date
MyDateString = "February 12, 1969"
MyTimeString = "4:35:47 PM"
' ...
MyDate = CDate(MyDateString) ' Convert to Date data type.
MyTime = CDate(MyTimeString) ' Convert to Date data type.
CDbl
CDbl 函数用于将数值表达式转换为 Double 值。对于负值,该函数的输入参数必须在 -4.94065645841247E-324 到 -1.79769313486231E+308 之间。对于正值,该函数的输入参数必须在 1.79769313486231E+308 到 4.94065645841247E-324 之间。
CDbl 示例:
Dim MyDec As Decimal
Dim MyDouble As Double
MyDec = 234.456784D ' Literal type character D makes MyDec a Decimal.
MyDouble = CDbl(MyDec * 8.2D * 0.01D) ' Convert result to a Double.
CDec
CDec 函数将数值转换为小数。
CDec 示例:
Dim MyDouble As Double
Dim MyDecimal As Decimal
MyDouble = 10000000.0587
MyDecimal = CDec(MyDouble) ' Convert to Decimal.
CInt
CInt 函数将数值转换为整数。
CInt 示例:
Dim MyDouble As Double
Dim MyInt As Integer
MyDouble = 2345.5678
MyInt = CInt(MyDouble) ' MyInt is set to 2346.
CLng
CLng 函数以一个数值作为参数,然后返回一个 Long 值。
CLng 示例:
Dim MyDbl1, MyDbl2 As Double
Dim MyLong1, MyLong2 As Long
MyDbl1 = 25427.45
MyDbl2 = 25427.55
MyLong1 = CLng(MyDbl1) ' MyLong1 contains 25427.
MyLong2 = CLng(MyDbl2) ' MyLong2 contains 25428.
CObj
CObj 函数将数值转换为对象。
CObj 示例:
Dim MyDouble As Double
Dim MyObject As Object
MyDouble = 2.7182818284
MyObject = CObj(MyDouble) ' Double value is pointed to by MyObject.
CShort
CShort 函数将数值转换为 Short 值。
CShort 示例:
Dim MyByte as Byte
Dim MyShort as Short
MyByte = 100
MyShort = CShort(MyByte) ' Convert to Short.
CSng
CSng 函数将数值转换为 Single 值。
CSng 示例:
Dim MyDouble1, MyDouble2 As Double
Dim MySingle1, MySingle2 As Single
MyDouble1 = 75.3421105
MyDouble2 = 75.3421567
MySingle1 = CSng(MyDouble1) ' MySingle1 is set to 75.34211.
MySingle2 = CSng(MyDouble2) ' MySingle2 is set to 75.34216.
CStr
下面的表格显示了 CStr 函数的输入参数和返回值:
|
输入参数数据类型 |
返回值 |
|
Boolean |
包含 True 或 False 的字符串 |
|
Date |
包含以系统的短日期格式表示的 Date 值(日期和时间)的字符串 |
|
数值 |
表示数字的字符串 |
CStr 示例:
本示例使用 CStr 函数将数值转换为字符串。
Dim MyDouble As Double
Dim MyString As String
MyDouble = 437.324
MyString = CStr(MyDouble) ' MyString is set to "437.324".
不同的类中都定义有字符串函数。这些类包括 Microsoft.VisualBasic.Strings 类和 System.String 类。
返回页首
使用 Microsoft.VisualBasic.Strings 类中的字符串函数
下列函数是 Microsoft.VisualBasic.Strings 类中定义的字符串函数。
注意:要使用字符串函数,请通过在源代码开始处添加以下代码将名称空间 Microsoft.VisualBasic.Strings 导入到项目中:
Imports Microsoft.VisualBasic.Strings
Asc 和 AscW
Asc 函数和 AscW 函数返回一个整数值,表示与指定的字符相对应的字符代码。这两个函数接受任何有效的字符表达式或字符串表达式作为参数。当字符串是输入参数时,则仅输入字符串的第一个字符。当字符串不包含任何字符时,将出现 ArgumentException 错误。Asc 返回输入字符的代码数据点或字符代码。对于单字节字符集 (SBCS) 值,返回值可以是 0 到 255 之间的数字。对于双字节字符集 (DBCS) 值,返回值可以是 -32768 到 32767 之间的数字。AscW 为输入字符返回 0 到 65535 之间的 Unicode 代码数据点。
例如:
Dim MyInt As Integer
MyInt = Asc("A") ' MyInt is set to 65.
MyInt = Asc("a") ' MyInt is set to 97.
MyInt = Asc("Apple") ' MyInt is set to 65.
Chr 和 ChrW
Chr 函数和 ChrW 函数返回与指定的字符代码相关联的字符。当 CharCode 超出 -32768 到 65535 的范围时,将出现 ArgumentException 错误。
例如:
本示例使用 Chr 函数返回与指定的字符代码相关联的字符。
Dim MyChar As Char
MyChar = Chr(65) ' Returns "A".
MyChar = Chr(97) ' Returns "a".
MyChar = Chr(62) ' Returns ">".
MyChar = Chr(37) ' Returns "%".
GetChar
GetChar 函数返回一个 Char 值,表示指定字符串的指定索引中的字符。当索引小于 1 或大于指定输入参数中最后一个字符的索引时,将出现 ArgumentException 错误。
例如:
本示例显示了如何使用 GetChar 函数从字符串的指定索引中返回字符。
Dim myString As String = "ABCDE"
Dim myChar As Char
myChar = GetChar(myString, 4) ' myChar = "D"
InStr
InStr 函数返回一个整数,指定一个字符串在另一个字符串中首次出现的起始位置。
例如:
以下示例使用 InStr 函数返回一个字符串在另一个字符串中首次出现的位置:
Dim SearchString, SearchChar As String
Dim MyPos As Integer
SearchString ="XXpXXpXXPXXP" ' String to search in.
SearchChar = "P" ' Search for "P".
' A textual comparison starting at position 4. Returns 6.
MyPos = InStr(4, SearchString, SearchChar, CompareMethod.Text)
Join
Join 函数返回一个字符串,该字符串是通过连接数组中包含的子字符串创建的。包含必须连接的子字符串的一维数组将作为参数传递给 Join 函数。该函数使用 Delimiter、String 作为可选参数来分隔返回的字符串中的子字符串。当省略 Delimiter 时,将使用空格(“ ”)作为子字符串之间的分隔符。当 Delimiter 是零长度字符串 ("") 时,数组中的子字符串将不使用分隔符,而是直接相连。
例如:
以下示例显示了如何使用 Join 函数:
Dim myItem(2) As String
Dim myShoppingList As String
myItem(0) = "Pickle"
myItem(1) = "Pineapple"
myItem(2) = "Papaya"
' Returns "Pickle, Pineapple, Papaya"
myShoppingList = Join(myItem, ", ")
LCase
LCase 函数返回已经转换为小写的字符串或字符。只有大写字母被转换为小写。所有小写字母和非字母字符均保持不变。
例如:
以下示例使用 LCase 函数返回字符串的小写形式:
Dim UpperCase, LowerCase As String
Uppercase = "Hello WORLD 1234" ' String to convert.
Lowercase = LCase(UpperCase) ' Returns "hello world 1234".
LTrim、RTrim 和 Trim
这些函数会返回一个包含指定字符串的副本的字符串。在使用 LTrim 时,没有起始空格。在使用 RTrim 时,没有尾随空格。在使用 Trim 时,既没有起始空格也没有尾随空格。
例如:
以下示例使用 LTrim 函数删除字符串变量中的起始空格,使用 RTrim 函数删除字符串变量中的尾随空格,以及使用 Trim 函数删除字符串变量中的起始空格和尾随空格:
Dim MyString, TrimString As String
MyString = " <-Trim-> " ' Initializes string.
TrimString = LTrim(MyString) ' TrimString = "<-Trim-> ".
TrimString = RTrim(MyString) ' TrimString = " <-Trim->".
TrimString = LTrim(RTrim(MyString)) ' TrimString = "<-Trim->".
' Using the Trim function alone achieves the same result.
TrimString = Trim(MyString) ' TrimString = "<-Trim->".
Replace
Replace 函数返回一个字符串,其中指定的子字符串按指定的次数替换为另一个子字符串。Replace 函数的返回值是一个字符串,该字符串在 Start 参数指定的位置开始,然后在指定字符串的末尾以 Find 参数和 Replace 参数中的值所指定的替换内容结束。
例如:
本示例演示了 Replace 函数:
Dim myString As String = "Shopping List"
Dim aString As String
' Returns "Shipping List".
aString = Replace(myString, "o", "i")
StrComp
StrComp 函数返回 -1、0 或 1。这将基于字符串比较的结果。字符串将从第一个字符开始按字母数字顺序排列的值进行比较。
例如:
以下示例使用 StrComp 函数返回字符串比较的结果。如果省略第三个参数,则使用选项比较语句或项目默认设置中定义的比较类型。
Dim MyStr1, MyStr2 As String
Dim MyComp As Integer
MyStr1 = "ABCD"
MyStr2 = "abcd" ' Defines variables.
' The two strings sort equally. Returns 0.
MyComp = StrComp(MyStr1, MyStr2, CompareMethod.Text)
' MyStr1 sorts after MyStr2. Returns -1.
MyComp = StrComp(MyStr1, MyStr2, CompareMethod.Binary)
' MyStr2 sorts before MyStr1. Returns 1.
MyComp = StrComp(MyStr2, MyStr1)
StrConv
StrConv 函数返回一个字符串,该字符串转换为输入参数中指定的值。StrConv 函数将转换字符串。这种转换基于 Conversion 参数中的值。Conversion 参数中的值是 VbStrConv 枚举的成员。
Conversion 参数的设置为:
|
枚举成员 |
说明 |
|
VbStrConv.None |
不执行转换 |
|
VbStrConv.LinguisticCasing |
- 使用语言规则而不是文件系统(默认值)来区分大小写 |
|
VbStrConv.UpperCase |
将字符串转换为大写字符 |
|
VbStrConv.LowerCase |
将字符串转换为小写字符 |
|
VbStrConv.ProperCase |
将字符串中每个单词的第一个字母转换为大写 |
例如:
以下示例将文本转换为小写字母:
Dim sText, sNewText As String
sText = "Hello World"
sNewText = StrConv(sText, VbStrConv.LowerCase)
Debug.WriteLine (sNewText) ' Outputs "hello world".
StrDup
StrDup 函数返回一个由指定的字符重复指定的次数而形成的字符串或对象。StrDup 函数具有两个参数:Number 参数和 Character 参数。Number 参数指定函数必须返回的字符串的长度。StrDup 函数仅使用 Character 参数中的第一个字符。Character 参数可以是 Char 数据类型、String 数据类型或 Object 数据类型。
例如:
以下示例使用 StrDup 函数返回由重复字符组成的字符串:
Dim aString As String = "Wow! What a string!"
Dim aObject As New Object()
Dim myString As String
aObject = "This is a String that is contained in an Object"
myString = StrDup(5, "P") ' Returns "PPPPP"
myString = StrDup(10, aString) ' Returns "WWWWWWWWWW"
myString = StrDup(6, aObject) ' Returns "TTTTTT"
StrReverse
StrReverse 函数返回一个字符串,该字符串将指定字符串的字符顺序颠倒过来。
例如:
Dim myString As String = "ABCDEFG"
Dim revString As String
' Returns "GFEDCBA".
revString = StrReverse(myString)
UCase
UCase 函数返回一个字符串或字符,包含已转换为大写的指定字符串。只有小写字母被转换为大写字母。所有大写字母和非字母字符均保持不变。
例如:
以下示例使用 UCase 函数返回字符串的大写形式:
Dim LowerCase, UpperCase As String
LowerCase = "Hello World 1234" ' String to convert.
UpperCase = UCase(LowerCase) ' Returns "HELLO WORLD 1234".
以下是 System 名称空间的 String 类中的字符串函数。
注意:要使用字符串函数,请通过在源代码开始处添加以下代码将 System.String 名称空间导入到项目中:
Imports System.String
Compare
Compare 函数比较输入参数中的两个字符串。通过使用单词排序规则来执行比较。发现不相等情况或比较完两个字符串后,比较将终止。
Compare 示例:
' Code is not compiled unless it is put in a Sub or in a Function.
Dim s1, s2 As String
s1 = "testexample"
s2 = "testex"
MsgBox(Compare(s2, s1)) 'Returns -1.
MsgBox(Compare(s1, s2)) 'Returns 1.
Concat
Concat 函数将一个或多个字符串相连接,然后返回连接后的字符串。
Concat 示例:
以下示例显示了如何使用 Concat 的重载版本:
' Code is not compiled unless it is put in a Sub or in a Function.
Dim s1, s2, sa(3) As String
sa(0) = "A"
sa(1) = "B"
sa(2) = "C"
s1 = "test"
s2 = "example"
s1 = Concat(s1, s2) 'Returns testexample.
MsgBox(s1)
MsgBox(Concat(sa)) 'Returns ABC.
Copy
Copy 函数将指定字符串中的值复制到另一个字符串中。
Copy 示例:
' Code is not compiled unless it is put in a Sub or in a Function.
Dim s1, s2 As String
s1 = "Hello World"
'Copy the string s1 to s2.
s2 = Copy(s1)
MsgBox(s2) 'Displays Hello World.
Remove
Remove 函数从指定字符串的指定位置开始删除指定数目的字符。Remove 函数有两个参数。分别是 StartIndex 参数和 Count 参数。Startindex 参数指定开始删除字符的字符串位置。Count 参数指定要删除的字符数。
Remove 示例:
' Code is not compiled unless it is put in a Sub or in a Function.
Dim s1, s2 As String
s1 = "Hello World"
'Removes 3 characters starting from character e.
s2 = s1.Remove(1, 3)
MsgBox(s2) 'Displays Hello World.
Substring
Substring 函数从指定字符串的指定位置开始检索字符串。
Substring 示例:
以下示例将从指定的字符位置开始并按指定的长度来检索子字符串:
' Code is not compiled unless it is put in a Sub or in a Function.
Dim s1, s2 As String
s1 = "Hello World"
s2 = s1.Substring(6, 5) 'Returns World.
MsgBox(s2)
ToCharArray
ToCharArray 函数将字符串中的字符复制到 Unicode 字符数组中。
ToCharArray 示例:
以下示例将指定位置中的字符复制到 Character 数组中:
' Code is not compiled unless it is put in a Sub or in a Function.
Dim s1 As String
Dim ch(10) As Char
s1 = "Hello World"
'Copies the characters starting from W to d to a Character array.
ch = s1.ToCharArray(6, 5)
MsgBox(ch(3)) 'Displays l.
ToLower
ToLower 函数采用一个字符串作为参数,然后以小写形式返回该字符串的副本。
ToLower 示例:
' Code is not compiled unless it is put in a Sub or in a Function.
Dim s1, s2 As String
s1 = "Hello World"
s2 = s1.ToLower() 'Converts any uppercase characters to lowercase.
MsgBox(s2) 'Displays hello world.
ToUpper
ToUpper 函数采用一个字符串作为参数,然后以大写形式返回该字符串的副本。
ToUpper 示例:
' Code is not compiled unless it is put in a Sub or in a Function.
Dim s1, s2 As String
s1 = "Hello World"
s2 = s1.ToUpper() 'Converts any lowercase characters to uppercase.
MsgBox(s2) 'Displays HELLO WORLD.
Trim、TrimStart 和 TrimEnd
这些函数会返回一个包含指定字符串的副本的字符串。使用 Trim 函数时,既没有起始空格也没有尾随空格。使用 TrimStart 函数时,没有起始空格。使用 TrimEnd 函数时,没有尾随空格。
例如:
以下示例使用 TrimStart 函数删除字符串变量开始处的空格,使用 TrimEnd 函数删除字符串变量末尾的空格,以及使用 Trim 函数删除字符串变量中的起始空格和尾随空格:
' Code is not compiled unless it is put in a Sub or in a Function.
Dim s1, s2 As String
s1 = " Hello World "
s2 = s1.Trim() 'Returns Hello World without any white spaces.
s2 = s1.TrimStart 'Removes the spaces at the start.
s2 = s1.TrimEnd 'Removes the white spaces at the end.
有关函数的详细信息,请访问下面的 Microsoft Web 站点:
http://msdn.microsoft.com/library/en-us/vblr7/html/vaorifunctionsvba.asp
css & skin 控件外观
Noel 发表于 2007-09-06 16:48:10
今晚了解了为html控件或者Web服务器控件定制外观样式的内容。css是asp语言中使用的东东,在asp.net 2.0里仍然可以使用。在aspx文件的源窗口里面,用<style>和</style>,之间集中为一些控件设置样式,然后再引用它。
<head>
<style>
.spanstyle
{
font: 12pt verdana;
font-weight:700;
color:orange;
}
.buttonstyle
{
font: 8pt verdana;
background-color:lightgreen;
border-color:black;
width:100
}
</style>
</head>
引用他的时候,使用class="上面定义的名字"
<body>
<button id="Button1" class="buttonstyle" runat="server">Click me!</button>
<span id="Span1" class="spanstyle" runat="server">
This is some literal text inside a styled span control
</span>
</body>
还有一种方式就是直接使用(注意下面的style=)
<button id="Button1" style="font: 8pt verdana;background-color:lightgreen;border-color:black;width:100" runat="server">Click me!</button>
这好像没有什么特别,.net中激动人心的新特性是使用Theme主题文件夹存放各种Skin文件,而skin文件记录了控件的各种外观属性并定义为一个单独的文件,使用时只需对一个页面指定其Theme,如:
<%@ Page Language="VB" Theme="Theme1" %>
页面中对控件就会按照skin的定义的模式显示。一个theme里可以有很多skin文件,同一个控件显示模式可以有不同的定义,通过指定控件的Skin ID属性指定其外观。见代码第六行的SkinID="Blue"
<body>
<form id="form1" runat="server">
<div>
<h3>Named Skins</h3>
<asp:Label ID="Label1" runat="server" Text="Hello 1" /><br />
<asp:Label ID="Label2" runat="server" Text="Hello 2" SkinID="Blue" /><br />
<asp:Label ID="Label3" runat="server" Text="Hello 3" /><br />
<br />
<asp:Calendar ID="Calendar1" runat="server"/>
<br />
<asp:Calendar ID="Calendar2" SkinID="Simple" runat="server"/>
</div>
</form>
</body>
下面是一个指定Label样式的skin文件内容:
<asp:label runat="server" font-bold="true" forecolor="orange" />
<asp:label runat="server" SkinID="Blue" font-bold="true" forecolor="blue" />
第一行没有定义SkinID为Label的缺省样式,第二行有一个SkinID="Blue",在aspx文件的源中某个控件就可以指定这个ID以显示不同的风格(见上面代码)。
Theme的一个高级用法是Theme模板,它不仅可以定义控件的外观,还可以定义像Login这类控件中Label控件的位置等信息。
注意,一旦为页面使用了Theme=,在aspx文件源中对页面控件属性设置就会实败,若希望页面中控件属性设置生效,在定义Theme时使用StyleSheetTheme=来代替使用Theme=
当然ASP.net 2.0还有另外的方法,就是使用master page,使得你的全部网页具有相同的风格。
AJAX
Noel 发表于 2007-09-06 16:37:08
AJAX的优点
Ajax不是指一种新的技术,它实际上是包括了JavaScript、CSS、DOM和XMLHttpRequest等技术的结合,而且Ajax是基于标准化的并被广泛支持和技术,并且不需要插件或下载小程序,所以在学习和掌握方面会比较容易。
减轻服务器的负担。因为Ajax的根本理念是“按需取数据”,所以最大可能在减少了冗余请求和响影对服务器造成的负担,节约空间和带宽租用成本。
无刷新更新页面,减少用户实际和心理等待时间。例如,项目里会用到的对简单的级联菜单的处理就需要此项技术。Ajax适用于交互较多,频繁读数据,数据分类良好的WEB应用。
Ajax可以使WEB中的界面与应用分离(也可以说是数据与呈现分离)。而在以前两者是没有清晰的界限的,数据与呈现分离的分离,这样做有利于分工合作、减少非技术人员对页面的修改造成的WEB应用程序错误、提高效率、也更加适用于现在的发布系统。
AJAX的缺点
级联菜单这种方式虽然解决了操作响应速度、不重载页面以及避免向服务器频繁发送请求的问题,但是如果用户不对菜单进行操作或只对菜单中的一部分进行操作的话,那读取的数据中的一部分就会成为冗余数据而浪费用户的资源,特别是在菜单结构复杂、数据量大的情况下(比如菜单有很多级、每一级菜又有上百个项目),这种弊端就更为突出。
Ajax的无刷新重载,由于页面的变化没有刷新重载那么明显,所以容易给用户带来困扰――用户不太清楚现在的数据是新的还是已经更新过的;现有的解决有:在相关位置提示、数据更新的区域设计得比较明显、数据更新后给用户提示等。
对流媒体的支持没有FLASH、Java Applet好.
用JavaScript作的Ajax引擎,JavaScript的兼容性是一个问题,并且调试Bug不是很容易的事,方法比较单一,而且有时从抛出的异常很难进行错误的定位。
ASP.NET 2.0:利用Master Page打造網頁的樣版
Noel 发表于 2007-09-06 16:27:28
ASP.NET 2.0:利用Master Page打造網頁的樣版
摘要
使用樣版(Template)的觀念來設計網頁是一個很重要的技巧,因為同一個網站的網頁通常需要使用相同的樣式與風格,以便讓網站的使用者使用起來有一致的感覺,開發ASP網頁的程設計師可以使用#include檔案的技巧引入一個共用的檔案當做網頁的開頭、結尾、或是左右兩邊的功能表或廣告,讓所製作的每一個網頁擁有一致的介面,達到樣版的功能,而且也可以縮短設計網頁操作介面的時間,讓網頁容易維護。ASP.NET網頁的程設計師可以使用User Control製作每一個網頁欲使用的開頭、結尾、或是左右兩邊的功能表或廣告當做樣版,再拿給每一個網頁使用,讓同一個網站的每一個網頁都可以有一致的操作介面和感覺,當然也可以得到縮短設計網頁操作介面的時間,使網站易於維護,除此之外,使用User Control設計的ASP.NET的網頁還可以經由把User Control放置到快取記憶體的做法來改善將網頁的內容顯示給網際網路使用者瀏覽的效能,但是#include 檔案和使用User Control來製作樣版功能都不是網頁設計工具內建的做法,也就是說要靠網頁的設計師自行套用才能享受利用樣版設計網頁的好處,針對這一點,ASP.NET 2.0提出一個新的功能,Master Page,讓網頁設計師可以採用視覺編輯的方式設計網站中每一個網頁欲套用的樣版,再套用到網站中每一個網頁,達到風格一致的效果,縮短網頁的設計和維護的時間,提升網頁開發的生產力。本文將帶領大家一探ASP.NET 2.0的Master Page功能的奧秘,並使用ASP.NET 2.0提供的Master Page樣版功能快速開發風格一致的網頁。
[特別注意] 本文中的示範是採用Visual Studio 2005 Beta 1版製作的,其程式的寫法與程式開發工具的使用方法可能會和最終讀者拿到的Visual Studio 2005正式版產品有所出入,您所看到的操作功能表和操作畫面也會和您使用Visual Studio 2005時採用那一種開發工具的操作習慣而稍有不同。
認識Master Page和Content Page
ASP.NET 2.0提出的Master Page和Content Page的觀念,可以幫助網頁的設計者快速地設計網頁的樣版,例如網頁的設計者想要讓網頁中的每一個網頁都具有相同的頁首、頁尾、左方功能表、以及右方的廣告超連結,就可以設計類似圖1的Master Page:
圖1:Master Page與Content Page

圖1中的頁首、頁尾、左方功能表、以及右方的廣告超連結就是Master Page的結構,而中央空白的地方就是放置內容網頁(即Content Page)的地方,網頁設計者只要更換合適的內容網頁就可以快速製作出一堆風格與樣式一致的網頁,其概念和做法類似ASP網頁的#include檔案和ASP.NET 1.X的User Control的做法,只不過是利用ASP.NET 2.0內建的Master Page來製作而已。
了解Master Page的用途之後,接下來我們就要使用Visual Studio 2005提供的Master Page功能建立一個網頁風格一致的網站。
建立Master Page
首先使用[Project]功能表底下的[New]功能底下的[Web Site]功能建立一個ASP.NET網站,然後使用滑鼠的右鍵點中[Solution Explorer]視窗中的專案,選擇出現的功能表中的[Add New Item]功能,再從出現的視窗中選擇[Master Page]項目,表示要為網站加入Master Page,如圖2所示:

圖2:為網站加入Master Page的畫面
在[Name]欄位中輸入Master Page檔案的名稱之後按下[Add]鍵,Visual Studio 2005就會為我們的網站加入一個Master Page,其副檔名預設為(*.master),並開啟剛加入的Master Page供您編輯,請注意其中的<% master %>標籤,表示這是一個Master Page,其中可以放置任何的HTML元素和Server控制項,包括<html>、<head>、和<form>等標籤,以及ASP.NET 2.0新加入的<asp:contentplaceholder>控制項,負責顯示內嵌的Content Page。您可以使用滑鼠的左鍵點選畫面左下方的[Design]頁籤,表示要對Master Page進行視覺編輯。
Master Page中最常見的結構就是Table,在Master Page中放入Table可以控制整個樣版的元素擺放位置,例如您可以於Table的上方放入負責顯示公司商標的<img>元素,和瀏覽網站中其他網頁的超連結,於Table的下方放入版權聲明。
ASCX是什么文件
Noel 发表于 2007-09-06 16:23:09
<%@ Register TagPrefix="uc1" TagName="_productList" Src="Controls/_productList.ascx" %>
<%@ Register TagPrefix="uc1" TagName="hotProduct" Src="Controls/hotProduct.ascx" %>
<%@ Register TagPrefix="uc1" TagName="newProduct" Src="Controls/newProduct.ascx" %>
<%@ Register TagPrefix="uc1" TagName="newList" Src="Controls/newList.ascx" %>
<%@ Register TagPrefix="uc1" TagName="xmlCount" Src="xmlCount.ascx" %>
是DOTNET上的用户控件
ASP.NET的用户控件(也叫做“pagelets”),是作为一种封装了特定功能和行为(这两者要被用在Web应用程序的各种页面上)的Web页面被开发的。一个用户控件包含了HTML、代码和其他Web或者用户控件的组合,并在Web服务器上以自己的文件格式保存,其扩展名是*.ascx。ASP.NET里的缺省配置并不允许Web客户端通过URL来访问这些文件,但是这个网站的其他页面可以集成这些文件里所包含的功能。要实现这一点,就要把对用户控件的参照放到可访问页面顶部的指令(directive)里,然后你就可以像使用Web控件一样在页面的任何地方使用这些控件。见下面的例子:
<%@ Register TagPrefix="MyControls"TagName="ProductItemDisplay"
...
<MyControls:ProductItemDisplayid="item1"
...
<MyControls:ProductItemDisplayid="item2" runat="server" name="FooBar" price="29.95" />
这一概念和服务器端包含(include)的概念不一样,其不同点在于:放在页面上的每个用户控件都存在于自己的命名空间里。任何尝试要在传统的ASP页面上多次使用服务器端包含(后者含有服务器的脚本块)的人,都会立即看到命名空间的好处。如果你已经尝试过,那么就很容易看到,传统的ASP页面会因为重新定义的变量和脚本过程而产生一个编译错误。在使用用户控件进行开发的过程中,由于控件的每个实例都存在于页面上一个唯一的命名空间里,因此用在用户空间里的变量名和过程名不会相互发生冲突,因而不用去考虑一个页面上有多少实例。每个用户控件的代码和功能都可通过控件的特定实例来访问。在上面的例子里,(假设ProdItem.ascx文件已经定义了一个“Buy”方法),你应该使用和下面代码段类似的什么东西来为Widget物品的购买进程进行初始化:
用户控件,就像普通ASP.NET的Web表单页面一样,能够使用代码分离的文件把*.ascx文件的表示逻辑同控件的功能分离开来,后者可以使用任何支持.NET的语言来编写。这样一种安排方法能够有助于将设计人员和编程人员的职责分离开来,让设计人员主要负责查看和感受控件的好处,让编程人员来开发必要的功能。无论是代码分离还是*.ascx文件自己内部的脚本块,都能够将其功能(属性和方法)向Web表单页面的设计人员公开。
事实上,几乎所有的Web网站都能够从用户控件里获益,因为这些网站一般都会将常见的元素在不同的页面里多次使用,例如广告横幅、工具条、法律声明和版权声明等。
Validate事件、 CausesValidation属性示例
Noel 发表于 2007-05-30 08:17:04
DisplayMember&Valuemember
Noel 发表于 2007-05-24 19:24:25
valuemember 显示的是selectvalue
例如:
表中有id,name两个字段, 要用combobox实现点击name就可以看到其它信息
with combobox
.datasource=dataset
.valuemember='name'
.displaymember='id'
end with
我们就可以用selectindex来获得name的id,便可进行查询 .
冒烟测试
Noel 发表于 2007-05-24 19:20:03
Smoke testing(冒烟测试)
冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。冒烟测试的执行者是版本编译人员。参考“Sanity testing(健全测试)”。
Sanity testing(健全测试)
软件主要功能成分的简单测试以保证它是否能进行基本的测试。
.NET在IIS下问题:分析器错误信息allowDefinition=MachineToApplication错误
Noel 发表于 2007-05-24 19:17:50
说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。
分析器错误信息: 在应用程序级别以外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。导致该错误的原因可能是在 IIS 中没有将虚拟目录作为应用程序进行配置。
源错误:
......
类型"string"的值无法转换为"System.Drawing.Color"
Noel 发表于 2007-05-24 19:09:13
代码如下: string strC="#C0FFFF"; Label1.BackColor=strC;
解决方法一: string strC="#C0FFFF"; Label1.BackColor=System.Drawing.ColorTranslator.FromHtml(strC)
解决方法二: string strC= "#C0FFFF"; Label1.BackColor=System.Drawing.Color.FromName("#C0FFFF");
