Sampson-Li
Sampson.Li学习经验总结博客 学历代表过去,能力代表现在.学习力代表未来!

.net获取页面控件有好几种情况.这里为大家总结一下,我所遇到的

第一种.直接获取本页面上的.木有在模板编辑内.或者用户控件里的控件

 CheckBox chk = (CheckBox)Page.FindControl("控件ID");

第二中.在用户控件里,或模板页中

CheckBox chk =Page.Master.FindControl("所在的编辑区ID").FindControl("控件ID") as CheckBox ;

既然举例checkbox了,就说下checkbox单选

一个是用服务器端控件

View Code
 1  很多时候你可能不喜欢用RadioButton实现单选功能,而使用CheckBox来实现,下面这个实例就是使用CheckBox来实现的,代码很少。
2 Html代码:
3 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="CheckBoxTest._Default" %>
4 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5 <html xmlns="http://www.w3.org/1999/xhtml" >
6 <head runat="server">
7 <title>单选CheckBox测试</title>
8 </head>
9 <body>
10 <form id="form1" runat="server">
11 <div>
12 <asp:CheckBox ID="chkItem1" runat="server" Text="选项1" AutoPostBack="true" oncheckedchanged="chkItem_CheckedChanged" />
13 <asp:CheckBox ID="chkItem2" runat="server" Text="选项2" AutoPostBack="true" oncheckedchanged="chkItem_CheckedChanged" />
14 <asp:CheckBox ID="chkItem3" runat="server" Text="选项3" AutoPostBack="true" oncheckedchanged="chkItem_CheckedChanged" />
15 <asp:CheckBox ID="chkItem4" runat="server" Text="选项4" AutoPostBack="true" oncheckedchanged="chkItem_CheckedChanged" />
16 <asp:CheckBox ID="chkItem5" runat="server" Text="选项5" AutoPostBack="true" oncheckedchanged="chkItem_CheckedChanged" />
17 <div>
18 你所选的是:<asp:Label ID="lblMessage" runat="server" ForeColor="Blue"></asp:Label>
19 </div>
20 </div>
21 </form>
22 </body>
23 </html>
24 源代码:
25
26 using ...省略;
27 namespace CheckBoxTest
28 {
29 public partial class _Default : System.Web.UI.Page
30 {
31 protected void Page_Load(object sender, EventArgs e)
32 {
33 }
34 protected void chkItem_CheckedChanged(object sender, EventArgs e)
35 {
36 CheckBox chkOld = (CheckBox)sender;
37 bool bChecked = chkOld.Checked;
38 for (int i = 1; i <= 5; i++)
39 {
40 CheckBox chk = (CheckBox)Page.FindControl("chkItem" + i);
41 chk.Checked = false;
42 }
43 if (bChecked)
44 {
45 CheckBox chkNew = (CheckBox)sender;
46 chkNew.Checked = true;
47 lblMessage.Text = chkNew.Text;
48 }
49 }
50 }
51 }

一个用html控件

View Code
 1 方法一
2 <BODY>
3 <input type="checkbox" name="cbox" value="cbox1" onClick="chooseOne(this);">checkBox1
4 <input type="checkbox" name="cbox" value="cbox2" onClick="chooseOne(this);">checkBox2
5 <input type="checkbox" name="cbox" value="cbox3" onClick="chooseOne(this);">checkBox3
6 <input type="checkbox" name="cbox" value="cbox4" onClick="chooseOne(this);">checkBox4
7 </BODY>
8 <script>
9 //chooseOne()函式,參數為觸發該函式的元素本身
10 function chooseOne(cb){
11 //先取得同name的chekcBox的集合物件
12 var obj = document.getElementsByName("cbox");
13 for (i=0; i<obj.length; i++){
14 //判斷obj集合中的i元素是否為cb,若否則表示未被點選
15 if (obj[i]!=cb) obj[i].checked = false;
16 //若是 但原先未被勾選 則變成勾選;反之 則變為未勾選
17 //else obj[i].checked = cb.checked;
18 //若要至少勾選一個的話,則把上面那行else拿掉,換用下面那行
19 else obj[i].checked = true;
20 }
21 }
22 </script>
23
24
25 方法二
26 <BODY>
27 <div id="mydiv">
28 <input type="checkbox" name="cbox1" value="cbox1" onClick="chooseOne(this);">checkBox1
29 <input type="checkbox" name="cbox2" value="cbox2" onClick="chooseOne(this);">checkBox2
30 <input type="checkbox" name="cbox3" value="cbox3" onClick="chooseOne(this);">checkBox3
31 <input type="checkbox" name="cbox4" value="cbox4" onClick="chooseOne(this);">checkBox4
32 </div>
33 </BODY>
34
35
36 <script>
37 //chooseOne()函式,參數為觸發該函式的元素本身
38 function chooseOne(cb) {
39 //先取得Div元素
40 var obj = document.getElementById("mydiv");
41 ///判斷obj中的子元素i是否為cb,若否則表示未被點選
42 for (i=0; i<obj.children.length; i++){
43 if (obj.children[i]!=cb) obj.children[i].checked = false;
44 //若是 但原先未被勾選 則變成勾選;反之 則變為未勾選
45 else obj.children[i].checked = cb.checked;
46 //若要至少勾選一個的話,則把上面那行else拿掉,換用下面那行
47 //else obj.children[i].checked = true;
48 }
49 }
50 </script>

在补充一下如何在页面page调用用户控件里的事件执行

View Code
 1 页面Page的Button事件中:
2 protected void Button1_Click(object sender, EventArgs e)
3 {
4 Type ucType = UsCtrlUpload1.GetType();
5 //用MethodInfo类来获取用户控件中的方法.
6 MethodInfo UcMethod = ucType.GetMethod("Button1_Click");// Button1_Click控件中的方法。
7 //在此处页面的方法中执行用户控件中的方法.
8 object[] argumentArrray = new object[2];
9 UcMethod.Invoke(UsCtrlUpload1, argumentArrray);//调用用户控件中的方法。此处执行了!!。
10
11 PropertyInfo UctextName = ucType.GetProperty("PicName");
12 Label2.Text = UctextName.GetValue(UsCtrlUpload1, null).ToString();//获取了上传的文件名信息。并显示在page页面上。
13
14 //这样也可以获取和设置控件中的属性值.但好象不稳定,时行时不行的.
15 //Label2.Text = UsCtrlUpload1.PicName;
16 }
17 附:
18 用户控件.cs文件中定义的属性:
19 public string PicName
20 {
21 get { return Label2.Text; }
22 set { Label2.Text = value; }
23 }
24 用户控件.cs文件中定义的方法:
25 public void Button1_Click(object sender, EventArgs e)
26 {
27 if (FileUpload1.HasFile)
28 {
29 Label2.Text = FileUpload1.PostedFile.FileName;
30 }

还有一些设置模板页的标题. this.Master.Page.Title="";


posted on 2011-11-23 11:56  Sampson  阅读(352)  评论(0编辑  收藏  举报