C# 如何通过中继器将项目绑定到控件?
我在中继器内部有“BasketControl”控制:C# 如何通过中继器将项目绑定到控件?,c#,asp.net,repeater,C#,Asp.net,Repeater,我在中继器内部有“BasketControl”控制: <asp:Repeater runat="server" ID="rptItems"> <ItemTemplate> <uc:BasketControl runat="server" ID="ucBasket" /> </ItemTemplate> </asp:Repeater> 应该很简单,但在谷歌找不到任何提示 注意:我应该处理“OnItemDa
<asp:Repeater runat="server" ID="rptItems">
<ItemTemplate>
<uc:BasketControl runat="server" ID="ucBasket" />
</ItemTemplate>
</asp:Repeater>
应该很简单,但在谷歌找不到任何提示
注意:我应该处理“OnItemDataBound”中继器事件并将数据对象分配给控件吗?还是有更快/更简单的方法
谢谢通常我是通过处理
ItemDatabound
事件来处理这类事情的
假设你有这个标记:
<asp:Repeater runat="server" ID="rptItems">
<ItemTemplate>
<uc:BasketControl runat="server" ID="ucBasket" />
</ItemTemplate>
</asp:Repeater>
您不需要处理
ItemDatabound
事件。如果有另一种方法,我不确定它是什么。通常我是通过处理ItemDatabound
事件来处理这类事情的
假设你有这个标记:
<asp:Repeater runat="server" ID="rptItems">
<ItemTemplate>
<uc:BasketControl runat="server" ID="ucBasket" />
</ItemTemplate>
</asp:Repeater>
您不需要处理
ItemDatabound
事件。如果还有别的方法的话,我不确定它是什么。您想在数据绑定后访问项目?例如,您的项目有一个按钮,单击时您想做一些事情?或者您想在数据绑定中访问该项目?增强的问题更具体一些您想在数据绑定后访问项目?例如,您的项目有一个按钮,单击时您想做一些事情?或者您想在数据绑定中访问该项吗?增强的问题更具体一点,我知道这种方法,但目前正在尝试寻找是否还有其他方法。将使问题更清楚一点。用另一个选项更新了我的答案。好的,可能这只是一个选项,但在repeater内部(在mrak up页0上),我们可以访问绑定对象(Container.DataItem)。在WPF中,我们还可以使用(如果我没记错的话,比如DataItem等等)。。。我正在寻找一种解决方案,不需要额外的努力来分配绑定项到控件。据我所知,没有一个。你必须自己连接你的控制装置。我知道这种方法,但目前正在努力寻找是否还有其他方法。将使问题更清楚一点。用另一个选项更新了我的答案。好的,可能这只是一个选项,但在repeater内部(在mrak up页0上),我们可以访问绑定对象(Container.DataItem)。在WPF中,我们还可以使用(如果我没记错的话,比如DataItem等等)。。。我正在寻找一种解决方案,不需要额外的努力来分配绑定项到控件。据我所知,没有一个。你必须自己把你的控制装置连接起来。
<asp:Repeater runat="server" ID="rptItems">
<ItemTemplate>
<uc:BasketControl runat="server" ID="ucBasket" />
</ItemTemplate>
</asp:Repeater>
protected override void OnInit(EventArgs e) {
base.OnInit(e);
this.rptItems += new RepeaterItemEventHandler(rptItems_ItemDatabound);
}
void Page_Load(object sender, EventArgs e) {
if(!IsPostback) {
rptItems.DataSource = ...; // List<BasketObject>
rptItems.DataBind();
}
}
void rptItems_ItemDatabound(object sender, RepeaterItemEventArgs e) {
BasketControl ucBasket = e.Item.FindControl("ucBasket") as BasketControl;
BasketObject basket = e.Item.DataItem as BasketObject;
// Use datasource/databind, but you could just as easily use a property/method of BasketControl
// Like so: ucBasket.LoadBasket(basket);
ucBasket.DataSource = basket;
ucBasket.DataBind();
}
<%@ Import Namespace="Your WebApp Namespace Here" %>
<asp:Repeater runat="server" ID="rptItems">
<ItemTemplate>
<uc:BasketControl runat="server" ID="ucBasket" Basket='<%# (Basket)Container.DataItem %>' />
</ItemTemplate>
</asp:Repeater>