晕,写了两个晚上的,同时也是自己学asp.net一年多以来,第一次有满意的作品!希望再接再厉!
我有信心做个优秀的人民教师和优秀的.net程序员!:)
'2004.6.10 'Programmer by czclk '自学.net一年,第一个自己写的用户登录控件 '事件CheckedResult,该事件参数e继承自EventArgs,含有用户名,密码,登录合法性(布尔值) '事件EnterEmpty,当用户名、密码文体框为空值时引发 Imports System.ComponentModel Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Data.SqlClient ")> Public Class Login Inherits System.Web.UI.WebControls.WebControl Implements IPostBackDataHandler Public Delegate Sub CheckedEvent(ByVal sender As Object, ByVal e As LoginEvent) Public Event EnterEmpty As EventHandler Public Event CheckedResult As CheckedEvent Private _user As String Private _pass As String Private _dataBase As String Private _dataTable As String Private _dataBaseUserName As String Private _dataBasePass As String Private _server As String Private _colUser As String Private _colPass As String Private _txtUser As String Private _txtPass As String
Public Property ColUser() As String '属性--用户名字段 Get Return _colUser End Get Set(ByVal value As String) _colUser = value End Set End Property Public Property ColPass() As String '属性--密码字段 Get Return _colPass End Get Set(ByVal value As String) _colPass = value End Set End Property Public Property Server() As String '属性--SQL服务器名 Get Return _server End Get Set(ByVal value As String) _server = value End Set End Property Public Property DataBaseUserName() As String '属性--数据库登录用户 Get Return _dataBaseUserName End Get Set(ByVal value As String) _dataBaseUserName = value End Set End Property Public Property DataBasePass() As String '属性--数据库登录密码 Get Return _dataBasePass End Get Set(ByVal value As String) _dataBasePass = value End Set End Property Public Property DataBase() As String '属性--数据库名 Get Return _dataBase End Get Set(ByVal value As String) _dataBase = value End Set End Property Public Property DataTable() As String '属性--数据表 Get Return _dataTable End Get Set(ByVal value As String) _dataTable = value End Set End Property Private ReadOnly Property ConnStr() As String '属性--构成连接字符串 Get Dim _connStr As New Text.StringBuilder() With _connStr .Append("server=" & Server & ";") .Append("Initial catalog=" & DataBase & ";") .Append("User ID=" & DataBaseUserName & ";") .Append("PassWord=" & DataBasePass & ";") End With Return _connStr.ToString End Get End Property Private Property txtUser() As String '属性--获取用户名文本框值 Get Return _txtUser End Get Set(ByVal value As String) _txtUser = value End Set End Property Private Property txtPass() As String '属性--获取密码文本框值 Get Return _txtPass End Get Set(ByVal value As String) _txtPass = value End Set End Property Private Sub CheckInit() '过程--验证连接数据库字符串的完整性 If DataBase = "" Or DataTable = "" Or DataBaseUserName = "" Or DataBasePass = "" Then Throw New Exception("缺少相应的参数!") End If End Sub Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter) '呈现服务器控件 Try CheckInit() writer.RenderBeginTag(HtmlTextWriterTag.Table) writer.RenderBeginTag(HtmlTextWriterTag.Tr) writer.RenderBeginTag(HtmlTextWriterTag.Td) writer.Write("用户名:") writer.RenderEndTag() writer.RenderBeginTag(HtmlTextWriterTag.Td) writer.AddAttribute(HtmlTextWriterAttribute.Type, "TextBox") writer.AddAttribute(HtmlTextWriterAttribute.Name, Me.UniqueID & ":User") writer.AddAttribute(HtmlTextWriterAttribute.Maxlength, "30") writer.RenderBeginTag(HtmlTextWriterTag.Input) writer.RenderEndTag() writer.RenderEndTag() writer.RenderEndTag() writer.RenderBeginTag(HtmlTextWriterTag.Tr) writer.RenderBeginTag(HtmlTextWriterTag.Td) writer.Write("密码:") writer.RenderEndTag() writer.RenderBeginTag(HtmlTextWriterTag.Td) writer.AddAttribute(HtmlTextWriterAttribute.Type, "Password") writer.AddAttribute(HtmlTextWriterAttribute.Name, Me.UniqueID & ":Pass") writer.AddAttribute(HtmlTextWriterAttribute.Maxlength, "30") writer.RenderBeginTag(HtmlTextWriterTag.Input) writer.RenderEndTag() writer.RenderEndTag() writer.RenderEndTag() writer.RenderBeginTag(HtmlTextWriterTag.Tr) writer.AddAttribute(HtmlTextWriterAttribute.Cols, "2") writer.RenderBeginTag(HtmlTextWriterTag.Td) writer.AddAttribute(HtmlTextWriterAttribute.Type, "submit") writer.AddAttribute(HtmlTextWriterAttribute.Name, Me.UniqueID) writer.AddAttribute(HtmlTextWriterAttribute.value, "提交") writer.RenderBeginTag(HtmlTextWriterTag.Input) writer.RenderEndTag() writer.RenderEndTag() writer.RenderEndTag() writer.RenderEndTag() Catch _error As Exception System.Web.HttpContext.Current.Response.Write("未能完成请求,错误信息如下:" & _error.Message) Exit Sub End Try End Sub Public Function LoadPostData(ByVal postDataKey As String, ByVal postCollection As System.Collections.Specialized.NamevalueCollection) As Boolean Implements System.Web.UI.IPostBackDataHandler.LoadPostData Dim _txtUserName As String = postCollection(Me.UniqueID & ":User") Dim _txtPass As String = postCollection(Me.UniqueID & ":Pass") If _txtUserName = "" Or _txtPass = "" Then Return True Else txtUser = _txtUserName txtPass = _txtPass OnCheckMain() Return False End If End Function
Public Sub RaisePostDataChangedEvent() Implements System.Web.UI.IPostBackDataHandler.RaisePostDataChangedEvent RaiseEvent EnterEmpty(Me, New EventArgs()) End Sub Private Sub OnCheckMain() '验证用户的合法性,引发CheckedResult事件 Dim _connStr As String = ConnStr Dim _conn As New SqlConnection(_connStr) Dim _comm As New SqlCommand() Dim _dataReader As SqlDataReader Try _comm.Connection = _conn _comm.CommandText = "select * from " & DataTable & " where " & ColUser & "='" & txtUser & "' and " & ColPass & "='" & txtPass & "'" _comm.CommandType = CommandType.Text _conn.Open() _dataReader = _comm.ExecuteReader(CommandBehavior.CloseConnection) If _dataReader.Read Then RaiseEvent CheckedResult(Me, New LoginEvent(txtUser, txtPass, True)) Else RaiseEvent CheckedResult(Me, New LoginEvent(txtUser, txtPass, False)) End If _dataReader.Close() Catch _error As Exception Throw New Exception(_error.Message) Finally If _conn.State = ConnectionState.Open Then _conn.Close() End Try End Sub End Class ---------------------------------------------------------源码2 '2004.6.10 'Programmer by czclk '自定义事件类LoginEvent,该事件参数e继承自EventArgs,含有用户名,密码,登录合法性(布尔值) Public Class LoginEvent Inherits EventArgs Public Sub New() End Sub Public Sub New(ByVal user As String, ByVal pass As String, ByVal result As Boolean) _userName = user _userPass = pass _CheckedPass = result End Sub Private _userName As String Private _userPass As String Private _CheckedPass As Boolean Public Property CheckPass() As Boolean Get Return _CheckedPass End Get Set(ByVal value As Boolean) _CheckedPass = value End Set End Property Public Property UserName() As String Get Return _userName End Get Set(ByVal value As String) _userName = value End Set End Property Public Property UserPass() As String Get Return _userPass End Get Set(ByVal value As String) _userPass = value End Set End Property End Class 
|