如何使用FindControl查找内容页上的某个控件?

2016-02-19 16:10 76 1 收藏

下面,图老师小编带您去了解一下如何使用FindControl查找内容页上的某个控件?,生活就是不断的发现新事物,get新技能~

【 tulaoshi.com - Web开发 】

  有以下两个页面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"
       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;
          }
      }
  }
   

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  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

来源:http://www.tulaoshi.com/n/20160219/1611213.html

延伸阅读
使用 DataGrid 控件 DataGrid 控件是一种类似于电子数据表的绑定控件,可以显示一系列行和列来表示 Recordset 对象的记录和字段。可以使用 DataGrid 来创建一个允许最终用户阅读和写入到绝大多数数据库的应用程序。DataGrid 控件可以在设计时快速进行配置,只需少量代码或无需代码。当在设计时设置了DataGrid 控件的 DataSource 属性...
按钮控件的使用 作者:杜修杏 下载本文示例代码 最近有不少朋友发信到我的邮箱,其中有高手也有菜鸟,也许他们问的问题我还不能一一解答,但是他们的来信的确让我感受到极大的鼓舞。今天忙里偷闲,翻译了一片外国的文章,献给那些摸索中的菜鸟们。 下面将通过一个最简单的程序来说明Windows的...
如何在pdf上修改内容 准备工作: 大家需要上网下载一款捷速PDF编辑器,下载完成之后安装即可。 捷速PDF编辑器修改pdf文字步骤: 1、打开安装好的捷速PDF编辑器,大家可以看到如下主界面: 2、选择菜单栏上的文件选项,在下拉列表中选择打开选项,也可以按快捷键Ctrl+O, 在打开的窗口中找到想要修改的pdf文档...
标签: ASP
  Wade Tai Microsoft Corporation 1999年11月 适用于:Microsoft Excel 2000 摘要:此窍门介绍了在将 Microsoft Excel 工作簿或工作表发布到 Web 页时,如何实现定制数值格式。它说明如何使用 NumberFormat 属性来指定条件字体颜色阴影。 在 Microsoft® Excel 中,您可以使用 NumberFormat 属性将条件数值格式应用于电子表格...
使用ADOData控件 ADOData控件使用MicrosoftActiveX数据对象(ADO)来快速建立数据绑定的控件和数据提供者之间的连接。数据绑定控件是任何具有“数据源”属性的控件。数据提供者可以是任何符合OLEDB规范的数据源。使用VisualBasic的类模块也可以很方便地创建子集的数据提供者。 尽管可以在应用程序中直接使用ActiveX数据对象,但AD...

经验教程

893

收藏

14
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部