我的ListView的ItemTemplate中有一个LinkButton:
<asp:ListView ID="lvNotification" runat="server">
<ItemTemplate>
<asp:LinkButton runat="server" ID="lbReject" OnClick="Reject_Click" CommandArgument='<%# Eval("offerID") %>' Text="Reject" />
</ItemTemplate>
</asp:ListView>
然后在我的代码中我有:
protected void Reject_Click(object sender, EventArgs e)
{
var lbreject = lvNotification.Items[0].FindControl("lbReject") as LinkButton;
string c = lbreject.CommandArgument;
}
ListView正确检索了4行,我放置了Eval("offerID")
,它显示了列表中每个项目的offerID,但是当我将它作为CommandArgument
放在LinkButton中并进行调试时,它在ListView中的任何项目上显示值1,我试图将offerID放在每个LinkButton CommandArgument中并且能够访问它,但我不能这样做。
我做错了什么?
答案 0 :(得分:1)
那是因为你总是在检查第一项(0索引)。您可以从发件人处获取LinkButton并检查其命令参数。
protected void Reject_Click(object sender, EventArgs e)
{
var lbreject = (LinkButton)sender;
string c = lbreject.CommandArgument;
}
答案 1 :(得分:0)
这里实际上ListView的OnItemCommand
事件可以很方便。这样您就可以从单点控制所有事件:
<asp:ListView ID="lvNotification" OnItemCommand="lvNotification_OnItemCommand" runat="server">
<ItemTemplate>
<asp:LinkButton runat="server" ID="lbReject" CommandName="Reject_Click" CommandArgument='<%# Eval("offerID") %>' Text="Reject" />
</ItemTemplate>
</asp:ListView>
protected void lvNotification_OnItemCommand(object sender, ListViewCommandEventArgs e)
{
if (String.Equals(e.CommandName, "Reject_Click"))//or any other event
{
LinkButton lbreject = (LinkButton) sender;
string c = lbreject.CommandArgument;
}
}