【发布时间】:2009-09-28 17:21:07
【问题描述】:
我有一个中继器控件,它从 SqlReader 生成链接列表。我正在尝试在每个链接旁边创建一个按钮,以允许用户删除该链接。我最初的想法是在 Item 模板中使用 表达式,如下所示。但是,ItemCommand 方法中的 CommandArgument 总是会返回为空。
<asp:Repeater ID="rptLinks" runat="server" onitemdatabound="rptLinks_ItemDataBound"
onitemcommand="rptLinks_ItemCommand">
<ItemTemplate><a href="<%# DataBinder.Eval(Container.DataItem, "URL") %>" target="_blank"><%# DataBinder.Eval(Container.DataItem, "URL") %></a><asp:ImageButton visible="false" ID="btnDeleteLink" runat="server" ImageUrl="/Images/DeleteIcon.gif" CommandName="DELETE" CommmandArgument=<%#Eval("URL") %> />
</ItemTemplate>
<SeparatorTemplate><br /></SeparatorTemplate>
</asp:Repeater>
接下来我尝试使用 ItemDataBound 事件以编程方式设置 CommandArgument,但我不知道要将 e.Item.DataItem 转换成什么,因此我可以引用 ["URL"] 项。
protected void rptLinks_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
ImageButton btnDelete;
btnDelete = (ImageButton) e.Item.FindControl("btnDeleteLink");
if (btnDelete != null)
{
btnDelete.Visible = (bool)ViewState["LinkEditing"];
string URL = ((WhatTypeGoesHere)(e.Item.DataItem))["URL"].ToString();
btnDelete.CommandArgument = URL;
}
}
【问题讨论】:
标签: c#