首 页 | 精品电影 | 音乐天堂 | 在线游戏 | Flash MTV | 三湘书屋 | 幽默笑话 | 三湘图库 | 美女写真 | IT知识库 | QQ贴图 | 加入书签

网页制作网络编程图形图象操作系统冲浪宝典软件教学网络安全认证考试通信技术电子商务业内动态书籍教程原码

最近更新 文章分类 多媒体类 精品软件

本站搜索:
您的位置:三湘时空 -> IT知识库 -> 文章分类 -> ASP.NET技巧 -> 如何使用FindControl查找内容页上的某个控件?
如何使用FindControl查找内容页上的某个控件?


文章类别:ASP.NET技巧 来源: 作者: 发表日期:2006-7-7 字体:[ ]

小游戏 | 在线影院 | 幽默笑话 | 源码下载 | Flash MTV | 音乐试听 | 书屋 | 美女写真

有以下两个页面Default.aspx和Result.aspx,代码如下:
<!-- Default.aspx -->
<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/Default.master"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="ContentPlaceHolder1">
    &nbsp;<asp:Label ID="Label1" runat="server" Text="Please input a string here"></asp:Label>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="~/Result.aspx" /></asp:Content>

//Default.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
//using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
}
 

<!-- Result.aspx -->
<%@ Page Language="C#" MasterPageFile="~/Default.master" AutoEventWireup="true" CodeFile="Result.aspx.cs" Inherits="Result" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <asp:Label ID="Label1" runat="server" Text="The string you input in the previous page is"></asp:Label>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</asp:Content>
//Result.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Result : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (PreviousPage != null)
        {
            TextBox tb = (TextBox)PreviousPage.FindControl("TextBox1");
            if (tb != null)
                TextBox1.Text = tb.Text;
        }
    }
}
 

这两个页面都指定了MasterPageFile属性。因为该MasterPage中的内容无关紧要,就不列出来了。在Default.aspx上有两个控件:TextBox1用于接受用户的输入,Button1用于提交页面,其PostBackUrl指向Result.aspx。在Result.aspx.cs的Page_Load方法中尝试在TextBox1中显示用户在前一页面的TextBox1中输入的字符串。当执行以下语句时:

TextBox tb = (TextBox)PreviousPage.FindControl("TextBox1");

tb的值为null。将以上语句更改为如下代码:

Content con = (Content)PreviousPage.FindControl("Content1");
if (con == null)
    return;

TextBox tb = (TextBox)con.FindControl("TextBox1");

但con的值为null,这样后续的语句也不可能执行了。问题出在哪里呢?

经过一番搜索,在forums.asp.net中找到了答案,以下引用的是bitmask的说法:
...becasue the Content controls themselves dissapear after the master page rearranges the page. You can use the ContentPlaceHolders, or the <form> on the MasterPage if there are no INamingContainers between the form and the control you need.


所以以上的代码应该改成:

TextBox tb = (TextBox)PreviousPage.Master.FindControl("ContentPlaceHolder1").FindControl("TextBox1");

bitmask还在他的博客上写了一篇文章来阐述FindControl方法和INamingContainers接口:
http://www.odetocode.com/Articles/116.aspx

http://movingboy.cnblogs.com/archive/2006/07/06/444690.html

上一篇:Photoshop打造一幅不错的电路板效果图 下一篇:C#多线程-不同线程之间通过事件委托封送调用方法
本栏目热门文章
·如何实现无刷新的DropdownList联动效果 2005-10-4
·使用HttpWebRequest向网站模拟上传数据 2005-10-4
·当DataSet中包含主/子表时,Update更新步骤 2005-10-6
·ASP.NET2.0实现无刷新客户端回调 2005-11-13
·ASP.NET中文件上传下载方法集合 2006-5-28
·分享个极好的无刷新二级联动下拉列表,同样适用与firefox 2005-10-19
·在Web DataGrid中当鼠标移到某行与离开时行的颜色发生改变( 2005-10-4
·ASP.NET中实现Flash与.NET的紧密集成 2005-11-21
·关于Asp.net页面Page_Load被执行两次的问题 2005-10-4
·ASP.NET极限:页面导航 (翻译) 2005-10-8
新近更新文章
·ASP.NET2.0中的ClientScriptManager 类用 2006-7-20
·ASP.NET2.0下含有CheckBox的GridView删除选定 2006-7-20
·ASP.NET2.0服务器控件之捕获回传事件 2006-7-20
·Lucene.net 实现全文搜索 2006-7-20
·ASP.NET2.0下含有DropDownList的GridView 2006-7-20
·ASP.NET2.0下为GridView添加服务器端删除确认! 2006-7-20
·ASP.NET2.0下为GridView添加鼠标滑过(onmouse 2006-7-20
·虚拟主机上asp.net运行权限不足问题及解决 2006-7-20
·asp.net页面head区动态设置全攻略 2006-7-20
·Asp.Net使用POST方法最简单的实现 2006-7-20
首 页 | 软件发布 | 广告联系 | 下载帮助 | 意见反馈 | 网站地图
  CopyRight? 2002-2004 WWW.SXSKY.NET? All Rights Reserved
三湘时空 站长QQ:82675303 Email: