2017-12-21 21 views
1

TextBoxesコントロールをデータベースのアイテムに基づいて動的に追加しようとしています。これは私のasp:PlaceHolder.aspx中のページ私は、動的HTMLを作成し、そのHTMLがasp:PlaceHolderにレンダリングしようとしているC#のコードからasp:TextBoxがasp内で動作していません:プレースホルダC#

<asp:PlaceHolder ID="PlaceHolderHTML" runat="server"></asp:PlaceHolder> 

となりました。

これは私のC#のコードです:

StringBuilder data = new StringBuilder(); 
foreach (SPListItem item in collitem) 
{ 
data.Append(@" 
     <tr> 
      <th class='accordionSection esEmplCardSectionHeader'> 
       <span id='lblSectionName'> 
        <asp:TextBox ID='TextBox" + item["ID"].ToString() + @"' runat='server'></asp:TextBox> 
       </span> 
      </th>    
     </tr>   
} 

PlaceHolderHTML.Controls.Add(new Literal { Text = data.ToString() }); 

が、ブラウザでTextBoxコントロールが表示されていません。だから、asp:PlaceHolderに送信されたHTML内のtextboxは、ブラウザがASP制御として、それを知っていないと、ブラウザに何も示されていないされているので、どのよう enter image description here

:私はテキストボックスの要素をinpectとき、私は次の結果を見ていますこの問題を解決するために?

+0

[サーバー側コントロールをリテラルに入れる方法は?](https://stackoverflow.com/questions/9101804/how-to-put-server-side-control-in-literal) – Laslos

+0

ASPXサーバーサイドマークアップを追加し、エンジンが正しくレンダリングすることを期待してください。それはそれが動作する方法ではありません。できるだけコントロールを動的に追加しないようにするのが最善です。 – mason

答えて

1

私はリテラルコントロールはネイティブhtmlのためだと思います。レンダリングされたソースを見てください。私はあなたのソースであなたのサーバー側のマークアップが表示されますと信じています。

新しいTextBoxでコントロールを追加したいと思うでしょう。

aspのテキストボックスを一括して保存し、ネイティブを使用して名前を管理し、ポストバック時に値を取得する方が簡単です。

関連する問題