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),然后从文本框中提取值并在更新中使用它们. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- .NET 3.5 / VS 2008上的ASP.NET Web Services的自定义HTTP基
- asp.net – 在我的代码隐藏类中,如何检索授权角色?
- asp.net“记住我”的cookie
- asp.net-mvc-4 – 使用RabbitMQ从ASP.net MVC 4消费AMQP消息
- asp.net-mvc – 具有IE条件注释的MVC4捆绑/缩小
- asp-classic – 如何在经典ASP中遍历集合?
- Asp.Net 无刷新文件上传并显示进度条的实现方法及思路
- asp.net – Databound和Databind之间的区别
- asp.net-mvc – 使用DataAnnotations与ASP.Net MVC的多个Me
- asp.net – Microsoft.Office.Interop.Excel在64位上不起作