2

たくさんのページがあります

<%@ Page Language="C#" AutoEventWireup="True" CodeBehind="MyPage.aspx.cs" Inherits="MyPage " MasterPageFile="~/Site.master"  %>
<asp:Content ContentPlaceHolderID="commonForm" runat="server">
 <asp:Table runat="server">
  <asp:TableRow>
   <asp:TableCell ID="cellControl" />
  </asp:TableRow>
 </asp:Table>
</asp:Content>

public partial class MyPage : MySuperPage { }

そして彼らのためのスーパークラス:

public abstract class MySuperPage : Page
{
    public MySuperPage()
    {
        this.Load += new EventHandler(PageLoad);
    }

    // my own method
    protected void PageLoad(object sender, EventArgs e)
    {
        var c = this.FindControl("cellControl"); // null!
    }

    // auto event handling
    protected void Page_Load(object sender, EventArgs e)
    {
        var c = this.FindControl("cellControl"); // null!
    }
}

どちらの方法でもこのコントロールを見つけることができないのはなぜですか?

4

2 に答える 2

1

私が見た最も一般的な解決策は、目的の ID を持つコントロールが見つかるまで、コントロール ツリーを再帰的に下降することです

于 2010-02-12T22:56:12.947 に答える
0

ページコントロールコレクションで何が問題なのかを見つけようとしているようです。テーブル コントロールでテーブル セルを検索する必要があります。

更新。マスター ページを使用している場合は、そのコントロールにページから直接アクセスできます。まず、マスター タイプを宣言する必要があります。

<%@ MasterType VirtualPath="~/MasterPage.master" %>

次に、パブリック プロパティを宣言します (これも何らかのコントロールになる可能性があります)。

public string MyTitle
{
    get { return "BaseMaster Title"; }
}

次に、次のように記述できます。

string text = Master.MyTitle;

また

Master.FindControl('Table1');
于 2010-02-12T10:02:11.793 に答える