0

ASP.NETのListViewコントロールに問題があります。各アイテムに編集オプションを追加しようとしていますが、CommandName = "Edit"でLinkBut​​tonを使用すると機能しますが、(これが問題です)LinkBut​​tonの代わりにImageButtonを使用する必要があり、機能しません、それは問題ではないことを読みましたが(http://www.4guysfromrolla.com/articles/061009-1.aspx)。LinkBut​​ton内にImageButtonをネストしようとしましたが、機能しません。

これは、ImageButtonのマークアップコードです。

<asp:ImageButton ID="editCircleIcon" runat="server" CommandName="Edit" ToolTip="Edit this circle" AlternateText="edit" Width="20px" ImageUrl="~/Images/Circulos/edit_circle.png" style="float:right;" />

また、ListViewのItemEditingイベント内にブレークポイントを設定しようとしましたが、アクセスされませんでした。

何か案が?

ありがとう!!!

PD:これはListView全体です:

<asp:ListView id="listOfCircles" runat="server" DataKeyNames="id" ItemPlaceholderID="circlePlaceHolder">
    <EmptyDataTemplate>
        <asp:label ID="noCircles" runat="server" Text="No circles defined" />
    </EmptyDataTemplate>

    <LayoutTemplate>
        <asp:Panel ID="circle" runat="server" BorderColor="Black" Width="100%">
            <asp:PlaceHolder runat="server" ID="circlePlaceHolder" />
        </asp:Panel>    
    </LayoutTemplate>

    <ItemTemplate>
        <asp:HiddenField ID="circleID" runat="server" Value='<%# Eval("id") %>' />
        <asp:Panel ID="circleHeader" runat="server" BorderWidth="2px">
            <asp:Image ID="circleIcon" runat="server" />
            <asp:Label ID="circleName" runat="server" Text='<%# Eval("nombre") %>'  />
            <asp:ImageButton ID="deleteCircleIcon" runat="server" ImageUrl="~/Images/Circulos/delete_circle.png" width="20px" style="float:right;" ToolTip="Delete this circle" CommandName="Delete" />
                <ajaxToolkit:ConfirmButtonExtender id="deleteCircleCBE" runat="server"
                                                   DisplayModalPopupID="deleteCircleMPE"
                                                   TargetControlID="deleteCircleIcon" />
                <ajaxToolkit:ModalPopupExtender ID="deleteCircleMPE" runat="server"
                                                BackgroundCssClass="modalBackground" 
                                                PopupControlID="deleteCirclePopup" TargetControlID="deleteCircleIcon"
                                                OkControlID="deleteCircleOk" CancelControlID="deleteCircleCancel"
                                                DropShadow="true" />
                <asp:Panel ID="deleteCirclePopup" runat="server" CssClass="PopUp" style="display:none">
                    <asp:ImageButton ID="deleteCircleClosePopup" runat="server" ImageUrl="~/Images/closePopupIcon.png" CssClass="closePopupImage" OnClientClick="$find('deleteCirclePopup').hide();" />
                    <br /><br /><br />
                    <asp:Label id="deleteCircleMssg" runat="server" Text="Are you sure do you want to delete this circle?" />
                    <br /><br />
                    <asp:LinkButton ID="deleteCircleOk" runat="server" Text="delete" />&nbsp;|&nbsp;
                    <asp:LinkButton ID="deleteCircleCancel" runat="server" Text="cancel" ClientIDMode="Static" />
                </asp:Panel>
                <asp:ImageButton ID="editCircleIcon" runat="server" CommandName="Edit" ToolTip="Edit this circle" AlternateText="edit" Width="20px" ImageUrl="~/Images/Circulos/edit_circle.png" style="float:right;" OnCommand="editCircleIcon_OnClick" />
                <asp:LinkButton ID="editCircleLinkButton" runat="server" CommandName="Edit" ToolTip="Edit this circle" style="float:right;" Text="Edit" />
        </asp:Panel>
        <asp:Panel ID="circleMiddle" runat="server" BorderWidth="2px">
            <asp:Panel ID="users" runat="server">
            <%--espacio para que salgan los usuarios del circulo--%>
            </asp:Panel>
        </asp:Panel>
        <asp:Panel ID="circleFooter" runat="server" BorderWidth="2px">
                <a href="#" onclick='showPopup(newUserPanelPopup, <%# Eval("id") %>)'><img src="/Images/Circulos/add_friend.png" width="20px" alt="Add user" style="margin: 0" title="Add a new user to this circle" /></a>
        </asp:Panel>
        <br /><br />
    </ItemTemplate>

    <EditItemTemplate>
        <asp:Panel ID="circleHeaderEditMode" runat="server" BorderWidth="2px" DefaultButton="editCircleOk" style="background-color:#DDD;">
            <asp:Image ID="circleIcon" runat="server" />
            <asp:TextBox ID="circleNewName" runat="server" Text='<%# Eval("nombre") %>' />
            <asp:Button ID="editCircleCancel" runat="server" Text="Cancel" style="float:right" CommandName="Cancel" />
            <asp:Button ID="editCircleOk" runat="server" Text="Update" style="float:right" CommandName="Update" />
        </asp:Panel>
        <br /><br />
    </EditItemTemplate>

</asp:ListView>

現在、編集オプションには、機能しないImageButtonとLinkBut​​tonの2つのコントロールがあります。

再度、感謝します!

4

3 に答える 3

1

わかりました、問題を解決しました。各PostBackでListViewを補充していました。解決策は簡単です:

If Not Me.IsPostBack Then
        ReFillList()
    End If

不思議なことに、LinkBut​​tonはそれを気にしないようで、Deleteオプションは常に機能します...誰かが理由を知っているなら、私は理由を知りたいです。

みなさん、ありがとう!

于 2012-08-17T08:39:57.280 に答える
0

これを試してみてはどうですか。

OnCommand="ImageButton_Command"

これは、それを接続する方法を示しています。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.imagebutton.commandname.aspx#Y0

于 2012-08-16T17:54:31.187 に答える
0

私は自分のコンピューターでこれをテストしましたが、コードビハインドメソッドが次のようなものであることがわかりました

Private Sub editCircleIcon_Command(sender As Object, e As System.Web.UI.WebControls.CommandEventArgs) Handles editCircleIcon.Command
    If e.CommandName = "Edit" Then
       ... //your code
    End If
End Sub

画像ボタンを使用します

<asp:ImageButton ID="editCircleIcon" runat="server" CommandName="Edit" ToolTip="Edit this circle" AlternateText="edit" Width="20px" ImageUrl="~/Images/Circulos/edit_circle.png" style="float:right;" />

コードビハインドが実行されました。背後にあるコードがどのように見えるかを投稿していただければ、私はもっと役立つかもしれません。

これがお役に立てば幸いです。

于 2012-08-16T18:38:01.330 に答える