如何实现ASP.Net系统的中英文版,在这里只提供一种方法,不过可以肯定的是Vs.net2005提供的皮肤肯定比这个方法先进和方便。
首先设计一个数据表来存储控件的Text值,表结构如下:
Text(程序名,语言,控件ID,控件Text)
P01101,CN,Label1,登录名
P01101,EN,Label1,UserName
实现算法:循环取得Page的控件,逐一付数据库里的Text值。经典提问:如何循环取得Page的控件呢?
Dim strSqlCon As String = System.Configuration.ConfigurationSettings.AppSettings("strConPage")
Dim sqlCon As System.Data.SqlClient.SqlConnection
Dim sqlCom As System.Data.SqlClient.SqlDataAdapter
Dim strCom As String
Dim datSet As System.Data.DataSet
Protected WithEvents RadioButtonList1 As System.Web.UI.WebControls.RadioButtonList
Protected WithEvents Label3 As System.Web.UI.WebControls.Label
Dim datRow As DataRow() '声明datarow数组
Private Sub Text_Init(ByVal ProgramID As String, ByVal Language As String)
sqlCon = New System.Data.SqlClient.SqlConnection(strSqlCon)
strCom = "Select * from Text Where Pro='" + ProgramID + "' and Lan='" + Language + "'"
sqlCom = New System.Data.SqlClient.SqlDataAdapter(strCom, sqlCon)
datSet = New System.Data.DataSet
sqlCom.Fill(datSet, "Text")
Dim control As Control
For Each control In Page.Controls(1).Controls
Try
Dim Label_Control As Label = CType(control, Label)
datRow = datSet.Tables("Text").Select("Con='" + control.ID + "'")
Label_Control.Text = datRow(0).Item("Txt")
Catch ex As Exception
End Try
Next
For Each control In Page.Controls(1).Controls
Try
Dim Button_Control As Button = CType(control, Button)
datRow = datSet.Tables("Text").Select("Con='" + control.ID + "'")
Button_Control.Text = datRow(0).Item("Txt")
Catch ex As Exception
End Try
Next
sqlCon.Close()
sqlCon = Nothing
sqlCom = Nothing
datSet = Nothing
End Sub