带有带有图像的LinkBut​​ton的GridView的UpdatePanel导致完全回发

时间:2010-04-20 23:01:52

标签: asp.net gridview updatepanel

所以这可能是一个相当具体的问题,但我想我会发布它,因为在我能够确定原因之前我花了好几个小时努力。

<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始终执行完整的回发。

3 个答案:

答案 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)

将LinkBut​​ton更改为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回发的控制。