2012-08-16 81 views
0

我在ASP.NET的ListView控件中遇到了一些問題。我試圖添加編輯選項到每個項目,它的工作原理,如果我用CommandName =「編輯」的LinkBut​​ton,但(這裏是問題)我需要使用ImageButton而不是LinkBut​​ton,它不起作用,儘管我讀過這不是問題(http://www.4guysfromrolla.com/articles/061009-1.aspx)。我也嘗試在LinkBut​​ton中嵌入ImageButton,但它不起作用。ASP.NET:使用ImageButton從ListView編輯項目

這是我的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

你可以發佈整個ListView嗎? – Adam 2012-08-16 17:57:08

+0

OnCommand =「editCircleIcon_OnClick」存在嗎?當你點擊ImageButton時,它會做回發嗎? – Adam 2012-08-16 18:29:32

回答

0

好的,我已經解決了這個問題。我在每個PostBack上重新填充ListView。解決辦法很簡單:

If Not Me.IsPostBack Then 
     ReFillList() 
    End If 

神祕地的LinkBut​​ton似乎並不受困擾和刪除選項總是工作...如果有人知道的原因,我很想知道爲什麼。

謝謝大家!

0

試試這個怎麼樣。

OnCommand="ImageButton_Command" 

這顯示瞭如何掛鉤它。

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

+0

真的,我不是在尋找一種替代方法,而是爲了解釋這個問題,而這些問題對我沒有意義。 例如,我有一個ImageButton CommandName =「刪除」,它沒有問題,但如果我設置CommandName =「編輯」它不起作用。 還是謝謝! – adripanico 2012-08-16 18:04:11

+0

然後請張貼列表視圖的其餘部分 – Adam 2012-08-16 18:05:45

+0

嗯我試圖把代碼回答自己,但stackoverflow告訴我,我必須等待8小時:_( – adripanico 2012-08-16 18:11:50

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 

,你用你的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;" /> 

代碼隱藏被執行。如果你會發布後面的代碼看起來像我可能會更有幫助。

我希望這會有所幫助。