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

asp.net – 如何将转发器绑定到列表以更新绑定的项目? (2种方法

发布时间:2020-12-15 23:35:59 所属栏目:asp.Net 来源:网络整理
导读:如果我有一个列表人人是由班级定义的 class Person{ string Forename { get;set; } string Surname { get; set; }} 我把它绑定到一个asp转发器控件,看起来像这样: asp:Repeater ID="Repeater1" runat="server" ItemTemplate asp:Label ID="lblForename" run
如果我有一个列表<人>人是由班级定义的
class Person
{
   string Forename
   {
      get;set;
   }
   string Surname
   {
      get; set;
   }
}

我把它绑定到一个asp转发器控件,看起来像这样:

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <asp:Label ID="lblForename" runat="server" Text="Forname" AssociatedControlID="txtForename" />
        <asp:TextBox ID="txtForename" runat="server" Text='<%# ((Person)Container.DataItem).Forename %>' />
        <br />
        <asp:Label ID="lblSurname" runat="server" Text="Forname" AssociatedControlID="txtSurname" />
        <asp:TextBox ID="txtSurname" runat="server" Text='<%# ((Person)Container.DataItem).Surname %>' />
        <br />
    </ItemTemplate>
</asp:Repeater>

获取用户输入对象的数据的最佳方式是什么?

我认为数据绑定的全部要点是,这是有效地为您处理,但是当我检查Repeater1.Items集合时,没有任何更改.我必须编写代码来做某事

//This is only intended to be pseudo code
for each item in Repeater1.Items
    ((Person)item.DataItem).Forename = item.FindControl("txtForname").Text;
end for

如果是这样,为什么DataItem属性始终为空?

附加信息:

我已经在调用代码的效果了

this.Repeater1.DataSource =  this.PersonList;
this.Repeater1.DataBind();

我试过使用Bind(“Forename”),但这似乎没有把TextBox中的信息带回到对象中,我必须手动执行吗?

解决方法

简单的答案是,Repeater控件不支持您要查找的那种双向数据绑定.除此之外,DataItem属性仅在创建中继器项目时使用,而在ItemDataBound事件之后,它将被设置为无.因此,在回发之后创建特定的转发器项目(如您在伪代码中所做的那样),您无法使用该属性来获取您使用的原始对象.

您将必须按照您的建议循环执行中继器项目(确保在执行任何操作之前检查该项目是否为ListItemType.Item或AlternatingItem),然后从文本框中提取值并在更新中使用它们.

(编辑:李大同)

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

    推荐文章
      热点阅读