2010-04-20 83 views
1

所以这可能是一个相当具体的问题,但我想我会张贴它,因为我花了几个小时奋斗之前,我能够确定原因。UpdatePanel与GridView与LinkBut​​ton与图像导致完整回传

<asp:GridView ID="gvAttachments" DataKeyNames="UploadedID" AutoGenerateColumns="false" OnSelectedIndexChanged="gvAttachments_SelectedIndexChanged" runat="server"> 
    <EmptyDataTemplate>There are no attachments associated to this email template.</EmptyDataTemplate> 
    <Columns> 
     <asp:TemplateField ItemStyle-Width="100%"> 
      <ItemTemplate> 
       <asp:LinkButton CommandName="Select" runat="server"><img src="/images/icons/trashcan.png" style="border: none;" /></asp:LinkButton> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

在GridView的TemplateField的ItemTemplate中,我有一个LinkBut​​ton,里面有一个图像。通常情况下,当我在旁边有一些文字的图像时这样做,但这次不管出于何种原因,我只是拥有图像。这会导致UpdatePanel始终执行完整的回发。

回答

1

将LinkBut​​ton更改为ImageButton并解决问题。

<asp:ImageButton ImageUrl="/images/icons/trashcan.png" Style="border: none;" CommandName="Select" runat="server" /> 
+0

这种情况下ImageButton和LinkBut​​ton有什么区别? =] – Gadonski 2010-09-10 20:47:24

+0

没有什么区别,这只是我在内部使用LinkBut​​tons的习惯。只是想发布这个,以防有人在做同样的事情。 – Chris 2010-09-20 13:58:52

2

而不是更改标记,您可以转到web.config并在pages标记中指定ClientIDMode =“Auto”。

UpdatePanel行为如此的原因是因为ClientIDMode正在生成对于UpdatePanel而言将会过长以至于无法注册。所以ClientID在中间截断,这样的控制将被视为未注册的控制。

欲了解更多信息,请阅读以下内容: http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode.aspx

0

上述解决方案也行,但有一两件事来检查。检查页面的表格标签。如果缺少id属性,您将遇到同样的问题。

如果表单标签,如下面给出的(没有ID),你会得到问题:

<form runat="server"> 
    <!-- your page markup --> 
</form> 

请添加ID,下面给出:

<form id="form1" runat="server"> 
    <!-- your page markup --> 
</form> 

你不会需要更新客户端模式在web.config或页面或控制。 您不需要在标记中更改链接按钮。 您不需要为代码后面的异步回发注册控件。

相关问题