2010-04-20 40 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或頁面或控制。 您不需要在標記中更改鏈接按鈕。 您不需要爲代碼後面的異步回發註冊控件。

相關問題