2012-01-20 9 views
0

こんにちは。私はasp.netの別のdiv内に新しいdivを作成しました。今私はその新しく作成されたdivのinnerhtmlプロパティを使用したいと思います。私は私が機能を持っている.. ..これは、イムは、私の.aspxページに行って何..ですASP.NETで作成したHtmlコントロールにプログラムでアクセスする

protected void link_Click(object sender, EventArgs e) 
{ 
    if (clickCheck != 0) 
    { 
     // access the newly generated div 'forNewEmployee' + specific id and call its innerHtml Method? 
     System.Web.UI.HtmlControls.HtmlControl div = (System.Web.UI.HtmlControls.HtmlControl)ScriptManager1.FindControl("forNewEmployee" + clickCheck); 

    } 
    else { 
     this.forNewEmployee.InnerHtml = newRow();   
    } 
} 

 <asp:ScriptManager ID="ScriptManager1" runat="server"> 
     </asp:ScriptManager> 
     <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
     <ContentTemplate> 
      <div id="forNewEmployee" runat="server"></div> 
     </ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="link" EventName="click" /> 
     </Triggers> 
     </asp:UpdatePanel> 

    <div class="addMore"> 
     <asp:Button ID="link" CssClass="label" runat="server" Text="Add More - Image" 
      onclick="link_Click" /> 
    </div> 

と分離コードファイル内を

を方法を見つけることができませんこれはforNewEmployee div内に新しい要素を導入するための文字列を作成しています。これは、私はあなたがdivでそれを行うことができますが、必ずasp:Panelでそれを行うことができ、完全にわからないんだけど...それがどのように定義されるか

protected string newRow() { 
    // check for click 
    clickCheck++; 

    // check for new row 
    countForEmployee++; 

    // building our new row 
    rowString.AppendLine("<label for='empName" + countForEmployee.ToString() + "'>Your Employee Name: <span>(required)</span></label>"); 
    rowString.AppendLine("<input id='empName" + countForEmployee.ToString() + "' class='registrationformEmployeeText' />"); 
    rowString.AppendLine("</div>"); 

    rowString.AppendLine("<div id='forNewEmployee" + countForEmployee.ToString() + "' name='forNewEmployee" + countForEmployee.ToString() + "' runat='server'></div>"); 

    return rowString.ToString(); 
} 
+0

'div'の代わりに' asp:Panel'を使うと、ほぼ同じようにレンダリングされ、コードの背後で使いやすくなります。 – Episodex

+0

newRow()で作成した新しいdivを取得し、そのinnerHtmlメソッドを呼び出すにはどうすればよいですか? –

答えて

0

です:

this.forNewEmployee.Controls.Add(new Literal(newRow()); 
+0

でも、newRow()関数で作成されたid = 'forNewEmployee + the-number-of-times-newRow() - 呼ばれた'という新しいdivを取得する方法は同じです。 問題は、行全体を別のIDでクローンしたいということです。たとえば、newRow関数で新しいdivを作成せず、以前のdiv/panelにnewRowを追加しても、それはHTML全体を置き換えますが、forNewEmployee div内に新しい行を追加しません。 –

0

最も簡単な方法は、使用することですasp .netパネルを作成し、(リテラルコントロールであっても)asp .netコントロールを作成して追加します。

だから、基本的にあなたのNewRow機能は次のようになります。

protected Panel newRow() { 
    // check for click 
    clickCheck++; 

    // check for new row 
    countForEmployee++; 

    // building our new row 
    Panel pnl = new Panel(); 
    pnl.Controls.Add(new Literal("<label for='empName" + countForEmployee.ToString() + "'>Your Employee Name: <span>(required)</span></label>")); 
    pnl.Controls.Add(new Literal("<input id='empName" + countForEmployee.ToString() + "' class='registrationformEmployeeText' />")); 

    Panel forNewEmployee = new Panel(); 
    forNewEmployee.ID = "forNewEmployee" + countForEmployee.ToString(); 

    pnl.Controls.Add(forNewEmployee); 

    return pnl; 

} 

この方法で、あなたが指定したコントロールのIDとにFindControlを行うことができるようになります。

関連する問題