1

リピーターがあり、その中にリンクボタンがあります。リピーターは OnItemCommand にバインドされていますが、ここでイベントが発生していません。コードは次のとおりです。

<asp:Repeater ID="rptList" runat="server" OnItemDataBound="rpt_OnItemDataBound" OnItemCommand="rptList_ItemCommand">
                <ItemTemplate>
                    <asp:LinkButton ID="lbName" Text='<%# Eval("Name") %>' runat="server" 
                        CommandArgument='<%# Eval("ID").ToString() %>' CommandName="NameClick">  
                    </asp:LinkButton><br />

                    <asp:Label ID="lblCreateDate" runat="server" Text='<%# Eval("CreateDate") %>' /><br />
                    <br />
                </ItemTemplate>
            </asp:Repeater>

コードビハインドは次のとおりです。

protected void rptList_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            switch (e.CommandName)
            {
                case "NameClick":
                    Guid id = (Guid)e.CommandArgument;

                    //do something
                    break;

                default:
                    break;
            }
        }
4

1 に答える 1

1

Ram S のコメントに従って、ポストバック時にリピーターを再バインドしていないことを確認する必要があります (この質問Repeater's Item command event is not fire on linkbutton click を参照してください) 。

そのように Guid をキャストする際にも問題が発生します - このコード行を変更してください

Guid id = (Guid)e.CommandArgument;

これに

Guid id = new Guid(e.CommandArgument.ToString());
于 2012-10-30T10:23:25.777 に答える