首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Repeater检索TextBox值

从Repeater检索TextBox值
EN

Stack Overflow用户
提问于 2011-07-24 13:44:37
回答 1查看 5.6K关注 0票数 4

Page_Load上,我正在使用EF4绑定一个Repeater。中继器包含一些文本框,在开始时填充,但用户可以编辑。如何在以后的回发中读取这些文本框?

page.aspx (提取液):

代码语言:javascript
复制
<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 (提取液):

代码语言:javascript
复制
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时,Repeater首先从数据库中重新填充,这样就丢失了对文本框的任何用户更改。

如果我将if (IsPostBack) return;放在Page_Load中,那么Repeater是空的。

我怎么才能避开这一切?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-24 13:49:32

如果不是回发,只填充中继器。只要为中继器启用viewstate,您的数据就会被持久化。

代码语言:javascript
复制
 protected void Page_Load(object sender, EventArgs e) {

    if(!IsPostBack)
    {
     using (var ctx = new Ctx()) {
        var ds = ctx.Orders;
        repOrders.DataSource = ds;
        repOrders.DataBind();
      }
    }

    }

如何提高“稍后回发”以从中继器读取文本值?通常的首选是从中继器中引发一个item命令,然后使用find控件获取项目模板中textbox的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6807125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档