Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过中继器将项目绑定到控件?_C#_Asp.net_Repeater - Fatal编程技术网

C# 如何通过中继器将项目绑定到控件?

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

我在中继器内部有“BasketControl”控制:

<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>