文字列を使用して動的にテキストボックスを作成しようとしています。バートンのクリックを読み込もうとしています。動的に作成されたテキストボックスを読む
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="textboxtest.aspx.cs" Inherits="test2.textboxtest" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<div id="TextBoxDiv" runat="server" class="asid box">
</div>
<asp:Button ID="Button1" runat="server" Text="CreateTextBox" onclick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="ReadTextBox" onclick="Button2_Click" />
</asp:Content>
ここにコードがありません。
protected void Button1_Click(object sender, EventArgs e)
{
string finalText = @"<input type=""text"" ID=""T1"" runat=""server"">
<asp:TextBox ID=""TB1"" runat=""server""></asp:TextBox>";
TextBoxDiv.InnerHtml = finalText;
}
protected void Button2_Click(object sender, EventArgs e)
{
TextBox txtAddress2 = (TextBox)Page.FindControl("TB1");
foreach (Control c in TextBoxDiv.Controls)
{
if (c is TextBox)
{
TextBox txt = (TextBox)c;
string str = txt.Text;
}
}
}
コードからわかるように、私はfindコントロールとループスルーを使ってテキストボックスにアクセスしようとしました。どちらも失敗しています。
代わりにdiv要素の 'Placeholder'を使用して(それはdiv要素を生成します)、その後、追加しますInnerHtmlを使用する代わりにプレースホルダ内のコントロール –
@ ADreNaLiNe-DJ私はテーブルがあり、テキストボックスを持つ複数の列を追加しているので、innetHTMLを使用しています。私はコードを簡略化しました。 – user3202862
InnerHtmlは、ASP.Netコントロールを「コンパイル/実行」することはありません。これは/と文字列を挿入するだけです –