2012-08-16 83 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;" /> 

代码隐藏被执行。如果你会发布后面的代码看起来像我可能会更有帮助。

我希望这会有所帮助。