對於用戶控件的使用有這樣的特點
就是
當我們要求一個用戶控件要實現特定的功能的時候
他可以在整個網站裡面的頁面上任意拖拽
但是
他的功能相對固定
也就是說在ascx文件中的代碼是寫死的
一旦要實現其他功能
就要將整個用戶控件重做
這裡介紹一種方法
要用戶控件的可重復使用性更強
前台代碼
就是一個簡單的登錄控件
<%@ Control Language=
C#
AutoEventWireup=
true
CodeFile=
LoginControl
ascx
cs
Inherits=
LoginControl
%>
<table border=
>
<tr>
<td colspan=
>
<strong>用戶登錄</strong></td>
</tr>
<tr>
<td >
用戶名
</td>
<td colspan=
>
<asp:TextBox ID=
txtName
runat=
server
ValidationGroup=
group
></asp:TextBox></td>
</tr>
<tr>
<td >
密碼
</td>
<td colspan=
>
<asp:TextBox ID=
txtPassword
runat=
server
TextMode=
Password
></asp:TextBox></td>
</tr>
<tr>
<td colspan=
>
<asp:RequiredFieldValidator ID=
RequiredFieldValidator
runat=
server
ControlToValidate=
txtName
ErrorMessage=
用戶名為必填項
ValidationGroup=
group
></asp:RequiredFieldValidator></td>
</tr>
<tr>
<td >
<asp:Button ID=
Button
runat=
server
Text=
Button
/></td>
<td >
<asp:Button ID=
Button
runat=
server
OnClick=
Button
_Click
Text=
登錄
ValidationGroup=
group
Width=
px
/></td>
<td >
<asp:Button ID=
Button
runat=
server
Text=
登出
Width=
px
/></td>
</tr>
</table>
用戶控件後台代碼
public event EventHandler Authenticate;
protected void Page_Load(object sender
EventArgs e)
{
}
public void Button
_Click(object sender
EventArgs e)
{
if (Authenticate!=null)
{
Authenticate(this
new EventArgs())
//如果用戶自定義添加了事件
則該button會按指定的事件進行
而不會走默認事件
相反
會執行默認事件
}
else
{
string connectString =
Server=
; DataBase=Test ; uid=sa ; pwd=cosecose
;
string selectString =
Select * from userInfo where Name=
+ txtName
Text
ToString() +
and Password=
+ txtPassword
Text
ToString() +
;
SqlConnection conn = new SqlConnection(connectString)
conn
Open()
SqlCommand cmd = new SqlCommand(selectString
conn)
SqlDataAdapter sda = new SqlDataAdapter()
sda
SelectCommand = cmd;
DataTable dt = new DataTable()
sda
Fill(dt)
if (dt
Rows
Count ==
)
{
Response
Write(
<script>window
alert(
密碼或用戶名輸入錯誤!
)</script>
)
}
else
{
Response
Write(
<script>window
alert(
恭喜您
登錄成功!
)</script>
)
}
conn
Close()
}
}
主頁面代碼
protected void Page_Load(object sender
EventArgs e)
{
Button btn =(Button)LoginControl
FindControl(
Button
)
btn
Click += new EventHandler(Show)
//提供第一種方法
通過findcontrol方法找到控件
然後對控件的事件進行添加
LoginControl
Authenticate += new EventHandler(Show)
//提供第二種方法
直接綁定上自己的定義事件
}
protected void Show(object sender
EventArgs e)
{
FormsAuthentication
SignOut()
Response
Write(
<script>window
alert(
用戶已經成功退出!
)</script>
)
From:http://tw.wingwit.com/Article/program/net/201311/11995.html