Page_Load
に、私はEF4を使用してリピーターをバインドしています。リピータには、最初に入力されたテキストボックスがいくつか含まれていますが、ユーザーは編集できます。これらのテキストボックスを後のポストバックでどのように読むことができますか?リピーターからTextBox値を取得する
page.aspx(抜粋):
<asp:Repeater ID="repOrders" runat="server">
<ItemTemplate>
<p>
<%# Eval("Id") %> -
<asp:TextBox ID="txtName" Text='<%# Eval("Name") %>' runat="server">
</asp:TextBox>
</p>
</ItemTemplate>
</asp:Repeater>
page.aspx.cs(抜粋):私はlnkCheck
をクリックしたときに
protected void Page_Load(object sender, EventArgs e) {
using (var ctx = new Ctx()) {
var ds = ctx.Orders;
repOrders.DataSource = ds;
repOrders.DataBind();
}
}
protected void lnkCheck_Click(object sender, EventArgs e) {
Response.Write(((TextBox)repOrders.Items[0].FindControl("txtName")).Text);
}
問題は、ある、リピータ再データベースから最初にポピュレートするので、テキストボックスへの変更は失われます。
if (IsPostBack) return;
をPage_Load
に入れると、リピータは空です。
どうすればこの問題を回避できますか?
いいえ、repOrders.Itemsは空です。 ViewStateは動作していないようです - デフォルトではオンになっています。何か案は? (そして、私は 'Save all'機能を使って個々のリピータアイテムから持ち上げないようにしています) – James
なぜそれが '空'になるのかわかりません。おそらく他の容疑者がいます。完全なHTML /コードを投稿することはできますか? – FiveTools
あなたは大丈夫です。さらに調べると、マスターページにPage.DataBind()が見つかりました。私を正しい方向に向けてくれてありがとう。 – James