OK、リピーターを文字通り何百回も問題なく使用しましたが、今日は何かがうまくいきません。リピーターがあり、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 は呼び出されません。それがコメントアウトされ、リピーターが各ポストバックでデータバインドされると、問題なく動作します。私は他の多くのページでこれを行ってきましたが、これではうまくいかないようです。
他の誰かがこの動作に遭遇したり、解決策を持っていますか?