2010-04-20 3 views
1

이것은 매우 구체적인 문제 일 수 있지만 그 원인을 파악할 수 있기 전에 여러 시간 동안 고생하고 나서 게시 할 것이라고 생각했습니다.이미지가있는 LinkButton이 포함 된 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에는 내부에 이미지가 포함 된 LinkButton이 있습니다. 일반적으로 나는 옆에 몇 개의 텍스트가있는 이미지를 가지고 있지만, 이번에는 어떤 이유에서든 이미지를 가지고 있습니다. 이로 인해 UpdatePanel은 항상 전체 포스트 백을 수행합니다.

답변

1

LinkButton을 ImageButton으로 변경하면 문제가 해결됩니다.

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

이 경우 ImageButton과 LinkButton의 차이점은 무엇입니까? =] – Gadonski

+0

차이점이 없습니다. LinkButton을 이미지 내부에 사용하는 습관 일뿐입니다. 누군가가 내가했던 것과 똑같은 일을하는 경우에 대비하여이 글을 게시하고 싶었다. – Chris

2

마크 업을 변경하는 대신 web.config로 이동하여 페이지 태그에 ClientIDMode = "Auto"를 지정할 수 있습니다.

UpdatePanel이 이와 같이 작동하는 이유는 ClientIDMode가 생성되기 때문에 UpdatePanel이 등록하는 데 너무 오래 걸리는 이유입니다. 따라서 ClientID는 중간에서 잘려서 이러한 컨트롤은 등록되지 않은 컨트롤처럼 처리됩니다. 자세한 내용은

는 다음 읽기 : http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode.aspx

0

위 솔루션도 작동을하지만 확인하는 한 가지 더있다. 페이지의 양식 태그를 확인하십시오. id 속성이 없으면 동일한 문제가 발생합니다. 아래에 주어진

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

, ID를 추가하십시오 : 당신이 (ID 없음) 아래로 태그가 형성되면

, 당신은 문제가 얻을 것이다

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

업데이트 할 필요가 없습니다 web.config 또는 페이지 또는 컨트롤의 ClientIDMode. 마크 업에서 링크 버튼을 변경할 필요가 없습니다. 코드 뒤에서 asynch postback에 대한 컨트롤을 등록 할 필요가 없습니다.

관련 문제