4
在Page_Load
上,我使用EF4绑定Repeater。转发器包含一些文本框,这些文本框在开始时填充,但用户可以编辑。我如何在以后的回传中阅读这些文本框?从中继器检索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(提取物):
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
那么Repeater是空的。
我该如何解决这个问题?
否,则repOrders.Items为空。 ViewState似乎没有工作 - 它(默认情况下)。有任何想法吗? (并且我正在研究“全部保存”功能,因此它不会从单个中继器项目中提出。) – James
我不明白为什么它会是'空'。可能还有其他一些嫌疑犯。你能发布完整的html /代码吗? – FiveTools
你说得很对。在进一步检查中,我在母版页中找到了一个Page.DataBind()。谢谢你指出我朝着正确的方向。 – James