0

私は自分の会社のプロジェクトに取り組んでいます。そこで問題が発生しました。したがって、私が意図したこととできないことの例を示しています。

私のaspxページには、ボタンとプレースホルダーがあります。例えば

 <asp:Button ID = "brnClickme" runat = "server" Text = "Click Me"onclick="brnClickme_Click" />
  <asp:PlaceHolder ID = "PH" runat = "server"></asp:PlaceHolder>

私のaspc.csファイルには、動的コントロールがあります。たとえば、ボタンがクリックされた後に値が変更されるラベルなどです。

だから私はこのようなコードを書いた

    protected void Page_Init(object sender, EventArgs e)
    {
        Label label = new Label();
        label.Text = "I am in the Place holder";
        PH.Controls.Add(label);
    }
    protected void Page_Load(object sender, EventArgs e)
    {

    }


   protected void brnClickme_Click(object sender, EventArgs e)
    {
        Label label = (Label)FindControl("label");
        label.Text = "After Click I am changed!";
    }

しかし、ボタンクリックイベントでは、ラベルが見つからないため、この動的に作成されたラベルのテキストをクリックで変更することはできません。私は間違いを犯したことを知っているので、私が犯した間違いと私が何をすべきかを教えてください。

前もって感謝します

4

3 に答える 3

3

プレースホルダーでコントロールを見つけてみてください

PH.FindControl("label"); 

ラベルを作成するときに見つけやすくするために、ラベルにIDを付けることをお勧めします。

label.ID = "findme";

それから

PH.FindControl("findme"); 
于 2012-09-03T10:27:55.577 に答える
2

あなたはそれを作成するときにあなたのコントロールを与えていませんID-これIDFindContorlそのコントロールを見つけるために使用するものです。

podiluskaが答えたように、(あなたの場合は)FindControl追加したコンテナーでも呼び出す必要があります。PH

protected void Page_Init(object sender, EventArgs e)
{
    Label label = new Label();
    label.ID = "myLabel";
    label.Text = "I am in the Place holder";
    PH.Controls.Add(label);
}

protected void brnClickme_Click(object sender, EventArgs e)
{
    Label label = (Label)PH.FindControl("myLabel");
    label.Text = "After Click I am changed!";
}
于 2012-09-03T10:28:03.937 に答える
0

すでに行ったように、INITで動的コントロールを再作成する必要があります。ボタンでLABELを検索する場合は、templateFormPlaceholder.FindControl代わりに[電話してみてください]をクリックします。

これを読む。asp.netで動的に作成されたテキストボックスからテキストを取得するのに役立つ場合があります

于 2012-09-03T10:33:12.947 に答える