На Page_Load
, я связываю повторитель, используя EF4. Повторитель содержит несколько текстовых полей, которые заполняются в начале, но пользователь может редактировать. Как я могу прочитать эти текстовые поля на более позднем постбеке?
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 (извлечение):
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);
}
Проблема в том, что когда я нажимаю lnkCheck
, повторитель сначала заново заполняется из базы данных, поэтому любые изменения, вносимые пользователем в текстовые поля, теряются.
И если я добавлю if (IsPostBack) return;
в Page_Load
, то повторитель будет пуст.
Как мне обойти это?