私の質問をするために、私はSqlDataSourceでとをaspx
含むファイルを作成しました:Button
DataList
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
<asp:DataList ID="DataList1" runat="server" DataKeyField="a"
DataSourceID="SqlDataSource1" >
<ItemTemplate>
a:
<asp:Label ID="aLabel" runat="server" Text='<%# Eval("a") %>' />
<br />
b:
<asp:Label ID="bLabel" runat="server" Text='<%# Eval("b") %>' />
<br />
</ItemTemplate>
</asp:DataList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:probaConnectionString %>"
SelectCommand="SELECT [a], [b] FROM [PROBA_TABLE]"></asp:SqlDataSource>
背後にあるコードTextBoxes
で、DataListのItemsに追加します。すべてのアイテムにPage_LoadのTextBoxを追加し、ButtonClickの別のTextBoxも追加しますeventhandler
。
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
foreach (DataListItem item in DataList1.Items)
{
item.Controls.Add(new TextBox());
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
foreach (DataListItem item in DataList1.Items)
{
item.Controls.Add(new TextBox());
}
}
}
}
これは、1つを除いて正常に機能します。ボタンをクリックすると、Page_Loadで作成されたTextBoxはText値を保持しますが、で作成されたTextBoxはButton1_Click
Text値を失います。私の本当の問題はこれよりも複雑ですが、これを解決することは私に大いに役立つと思います。