加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 从Repeater中检索TextBox值

发布时间:2020-12-16 09:35:25 所属栏目:asp.Net 来源:网络整理
导读:在Page_Load上,我使用EF4绑定了一个Repeater.转发器包含一些文本框,这些文本框在开始时填充但用户可以编辑.如何在以后的回发中阅读这些文本框? page.aspx(提取): asp:Repeater ID="repOrders" runat="server" ItemTemplate p %# Eval("Id") % - asp:TextBo
在Page_Load上,我使用EF4绑定了一个Repeater.转发器包含一些文本框,这些文本框在开始时填充但用户可以编辑.如何在以后的回发中阅读这些文本框?

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时,Repeater首先从数据库重新填充,因此任何用户对文本框的更改都将丢失.

如果我把if(IsPostBack)返回;在Page_Load中,Repeater为空.

我怎么能绕过这个?

解决方法

如果不是回发,则仅填充转发器.只要为转发器启用了viewstate,您的数据就会被保留.

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控件获取项目模板中文本框的值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读