2010-04-27 3 views
4

템플릿 필드를 통해 데이터 바인딩 된 asp : GridView 내부에서 asp : Button을 인스턴스화합니다. 일부 버튼은 서버 측 함수를 호출하기로되어 있지만 일부 이상한 이유 때문에 그렇지 않습니다. 모든 버튼은 클릭 할 때 현재 페이지의 포스트 백을 실행하고 아무 것도하지 않고 효과적으로 페이지를 다시로드합니다.asp : Button이 서버 측 함수를 호출하지 않습니다.

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false" CssClass="l2 submissions" ShowHeader="false"> 
    <Columns>  

     <asp:TemplateField>    
      <ItemTemplate><asp:Panel ID="swatchpanel" CssClass='<%# Bind("status") %>' runat="server"></asp:Panel></ItemTemplate>     
      <ItemStyle Width="50px" CssClass="sw" /> 
     </asp:TemplateField> 

     <asp:BoundField DataField="description" ReadOnly="true">         
     </asp:BoundField> 

     <asp:BoundField DataField="owner" ReadOnly="true"> 
      <ItemStyle Font-Italic="true" /> 
     </asp:BoundField> 

     <asp:BoundField DataField="last-modified" ReadOnly="true"> 
      <ItemStyle Width="100px" /> 
     </asp:BoundField> 

     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:Button ID="viewBtn" cssclass='<%# Bind("sid") %>' runat="server" Text="View" OnClick="viewBtnClick" /> 
      </ItemTemplate> 
     </asp:TemplateField>           

    </Columns> 
</asp:GridView> 

viewBtn 상기 서버 측 viewBtnClick() 함수를 호출한다 : 아래

코드의 단편이다. 적절한 서명 (object, EventArgs)과 함께 정의 된 함수가 있습니다. 한 가지주의해야 할 점은이 코드는 실제로 다른 ASCX에로드 된 ASCX 안에 있으며 결국 ASPX에로드된다는 것입니다.

문제에 대한 도움이나 의견을 보내 주시면 감사하겠습니다. 감사!

(오, 나의 쓰레기 HTML/CSS 의미를 생각하지 마십시오 - 이것은 매우 초기 단계에 아직도있다 : P)

답변

3

AutoWireupEvents가 true로 설정되어 있습니까?

+0

그래, 가장 확실합니다. : p –

+1

이 하위 ascx에 어떤 시점에서 컨트롤 트리에 동적으로 추가 된 항목이 있습니까? – Tejs

+0

여기에있을 수 있습니다. 예, 당신 말이 맞아요. ASCX는 GET 매개 변수에 따라 동적으로 상위 ASCX에로드됩니다. –

3

당신의 GridView이 Page_Prerender 동안 바인딩되는 경우, ASP : 버튼 문제는 포스트 백 이벤트가 처리 될 때 존재하지 않습니다.

Page_Load 동안 Gridview를 바인딩하거나, OnClick이 아닌 GridView의 OnItemCommand 이벤트를 사용하여 바인딩을 시도하십시오.

+0

좋은 통찰력이지만 내 GridView는 Page_Load 중에 데이터 바인딩 중입니다. 그래도 OnItemCommand를 살펴 보겠습니다. 고마워! 그러나 GridView 외부에서 일반 asp : Button을 사용하려고 시도했지만 서버 측 훅도 실행하지 않았습니다. 기묘한. –

관련 문제