C# 我刚才影响了哪一个重复项目?
假设一个中继器创建了以下模板的10个实例。然后,用户在第三个实例中单击了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
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();
}