好的,我已经使用repeater数百次而没有问题,但今天出了些问题。我有一个repeater并订阅了itemCommand事件,但是当我的命令运行时,页面会回传,但事件不会触发。
为了解决这个问题,我不得不在每次postback时都进行数据绑定。
我的repeater看起来像这样:
<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。一旦注释掉并且重复器在每个 postback 上获取数据绑定,它就可以正常工作。我在许多其他页面上也这样做了,但在这个页面上似乎不起作用。
有其他人遇到过这种情况或者有解决方法吗?