所以这可能是一个相当具体的问题,但我想我会发布它,因为在我能够确定原因之前我花了好几个小时努力。
<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中,我有一个LinkButton,里面有一个图像。通常情况下,当我的图像旁边有一些文字时,我会这样做,但这一次,无论出于何种原因,我只有图像。这会导致UpdatePanel始终执行完整的回发。
答案 0 :(得分:2)
您可以转到web.config并在pages标记中指定ClientIDMode =“Auto”,而不是更改标记。
UpdatePanel这样做的原因是因为生成ClientIDMode对于UpdatePanel进行注册会太长。因此ClientID在中间被截断,这样的控制将被视为未注册的Control。
有关更多信息,请阅读以下内容: http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode.aspx
答案 1 :(得分:1)
将LinkButton更改为ImageButton,问题就解决了。
<asp:ImageButton ImageUrl="/images/icons/trashcan.png" Style="border: none;" CommandName="Select" runat="server" />
答案 2 :(得分:1)
以上解决方案也有效,但还有一件事需要检查。检查页面的表单标签。如果缺少id属性,您将遇到同样的问题。
如果您在下面给出了表格标签(没有ID),您将遇到问题:
<form runat="server">
<!-- your page markup -->
</form>
请添加ID,如下所示:
<form id="form1" runat="server">
<!-- your page markup -->
</form>
您无需在web.config或页面或控件中更新ClientIDMode。 您无需在标记中更改链接按钮。 您不需要从后面的代码中注册对asynch回发的控制。