C# 我刚才影响了哪一个重复项目?

C# 我刚才影响了哪一个重复项目?,c#,asp.net,repeater,C#,Asp.net,Repeater,假设一个中继器创建了以下模板的10个实例。然后,用户在第三个实例中单击了btnRemove控件 我如何才能访问中继器中特定的项目集 <asp:Repeater ID="rptItems" runat="server" > <ItemTemplate> <div class="lightShadowBox gradientGray"> <label class="labelSmallI

假设一个中继器创建了以下模板的10个实例。然后,用户在第三个实例中单击了
btnRemove
控件

我如何才能访问中继器中特定的项目集

<asp:Repeater ID="rptItems" runat="server" >
        <ItemTemplate>
            <div class="lightShadowBox gradientGray">
                <label class="labelSmallInline">Description: </label>
                <%# DataBinder.Eval(Container.DataItem, "Description") %>
                <label>Path:</label>
                <%# DataBinder.Eval(Container.DataItem, "Path") %>
                <asp:Button runat="server" ID="btnRemove" OnClick="click" Text="Remove" CssClass="standardButton"/> 
            </div>
    </ItemTemplate>
</asp:Repeater>

说明:
路径:

您应该使用btton的
NamingContainer
属性来获取
RepeaterItem
,然后您可以使用
item.FindControl
来获取对其他控件的引用

protected void click(object sender, EventArgs e)
{
    Button btnRemove = (Button) sender;
    RepeaterItem item = (RepeaterItem) btnRemove.NamingContainer;
    // for example:
    Label labelSmallInline = (Label) item.FindControl("labelSmallInline");
}

在btnRemove按钮的事件处理程序中,您可以从处理程序中获取发送者对象,并尝试获取该发送者属于10项中的哪个项

protected void btnRemove_Click(object sender, EventArgs e){
var btnRemove = sender as Button;

//Now you can search the repeater for the control or if I can recall correctly you can get the 
//Parent property of the button and traverse from there
}

设想一个类似于循环的
中继器,它将遍历所有数据并显示出来。这使得在从数据源中提取数据的同时定制网页变得非常容易

您的主要问题是,如何识别中继器中的哪个项目?答案,
id
是唯一的标识符。当
中继器
迭代时,它也会公开唯一标识符或
id

所以你会想做这样的事情:

<a href="Page.aspx?id=<%# Eval("Id") %></a>
它现在可以公开那些公开id的
Eval

您可以使用按钮控件的事件从发布行捕获数据

FYI:您可以使用
Eval(“”
而不是
DataBinder.Eval(Container.DataItem“”)


说明:
路径:
受保护的void btnRemove_命令(对象发送方,CommandEventArgs e)
{
字符串路径=e.CommandArgument.ToString();
}
protected void btnRemove(object sender, EventArgs e)
{
     var item = (((LinkButton)sender).CommandArgument;
}
<asp:Repeater ID="rptItems" runat="server" >
    <ItemTemplate>
        <div class="lightShadowBox gradientGray">
            <label class="labelSmallInline">Description: </label>
            <%# Eval("Description") %>
            <label>Path:</label>
            <%# Eval("Path") %>
            <asp:Button runat="server" ID="btnRemove"
                OnCommand="btnRemove_Command"
                CommandArgument='<%# Eval("Path") %>'
                Text="Remove" CssClass="standardButton"/> 
        </div>
    </ItemTemplate>
</asp:Repeater>

protected void btnRemove_Command(object sender, CommandEventArgs e)
{
    string path = e.CommandArgument.ToString();
}