日期:2012-08-19  浏览次数:21212 次

自定义控件要引发LoadPostData方法,需要包含一个ID为this.UniqueID的控件

可在控件组中加入一个Hidden控件!

writer.Write("<input type='hidden' name='" + me.UniqueID + "'>")

或者干脆更简单的做法,把submit的name属性设置为me.UniqueID

Imports System.ComponentModel
Imports System.Web.UI
Imports System.Web.UI.WebControls
<DefaultProperty("Text"), ToolboxData("<{0}:Login runat=server></{0}:Login>")> Public Class Login
Inherits System.Web.UI.WebControls.WebControl
Implements IPostBackDataHandler
Public Event CheckError As EventHandler
Private _user As String
Private _pass As String


Public Function LoadPostData(ByVal postDataKey As String, ByVal postCollection As System.Collections.Specialized.NameValueCollection) As Boolean Implements System.Web.UI.IPostBackDataHandler.LoadPostData
_user = CType(postCollection(Me.UniqueID & ":User"), String)
_pass = CType(postCollection(Me.UniqueID & ":Pass"), String)
If _user <> _pass Then
Return True
Else
Return False
End If
End Function

Public Sub RaisePostDataChangedEvent() Implements System.Web.UI.IPostBackDataHandler.RaisePostDataChangedEvent
OnCheckError()
End Sub

Public Sub OnCheckError()
RaiseEvent CheckError(Me, New System.EventArgs())
End Sub


Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
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()
End Sub
End Class