好的,我已经使用中继器数百次没有问题,但今天出了点问题。我有一个转发器,并且我正在订阅 itemCommand 事件,但是当我的命令运行时,页面会发回,但不会触发该事件。
为了解决这个问题,我必须在每次回发时进行数据绑定。
我的中继器看起来像这样:
<asp:Repeater id="MyRepeater" runat="server" onitemcommand="MyRepeater_ItemCommand">
<ItemTemplate>
<li>
<asp:Label id="Label" runat="server" />
<asp:LinkButton id="LinkButton1" runat="server" commandname="Complete" commandargument='<%# Eval("MyID") %>' text='<%# Eval("Title") %>' />
</li>
</ItemTemplate>
</asp:Repeater>
我的代码隐藏是这样的:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SetupPage();
}
}
private void SetupPage()
{
// Do other stuff
MyRepeater.DataSource = Repository.GetStuff()
MyRepeater.DataBind();
}
protected void MyRepeater_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
// Do all my stuff here
}
除非我注释掉 if (!IsPostBack) 行,否则不会调用 MyRepeater_ItemCommand。一旦将其注释掉并且中继器在每次回发时都获得数据绑定,它就可以正常工作。我已经在许多其他页面中完成了此操作,但在此页面上似乎不起作用。
还有其他人遇到这种行为或有解决方案吗?