2010-04-27 6 views
4

J'instancie un bouton asp: dans un champ lié aux données: GridView à travers les champs du modèle. Certains des boutons sont censés appeler une fonction côté serveur, mais pour une raison étrange, ce n'est pas le cas. Tous les boutons lorsque vous cliquez dessus déclenche une publication sur la page en cours, ne faisant rien, rechargement efficace de la page.asp: Le bouton n'appelle pas la fonction côté serveur

Ci-dessous est un fragment de code:

<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> 

Le viewBtn doit appeler au-dessus de la fonction viewBtnClick() sur le côté serveur. J'ai cette fonction définie, avec une signature appropriée (objet, EventArgs). Une chose qui est peut-être à noter est que ce code est réellement dans un ASCX, qui est chargé dans un autre ASCX, finalement chargé dans un ASPX.

Toute aide ou un aperçu de la question sera si apprécié. Merci!

(oh, et s'il vous plaît ne me dérange pas mes trash HTML/sémantique CSS - cela est encore à un stade très, très tôt: p)

Répondre

3

Est-ce que AutoWireupEvents est défini sur true?

+0

yup, c'est certainement. : p –

+1

L'ascx enfant contient-il dynamiquement ajouté dans l'arbre de contrôle à un moment donné? – Tejs

+0

vous pourriez être sur quelque chose ici. Oui, vous avez bien compris. l'ASCX est chargé dynamiquement dans l'ASCX parent, sur la base d'un paramètre GET. –

3

Si votre GridView est d'être databound pendant Page_PreRender, le asp: bouton en question n'existe pas lorsque les événements de publication sont traités.

Essayez de lier la vue grid pendant Page_Load ou en utilisant l'événement OnItemCommand de GridView au lieu du OnClick du bouton.

+0

C'est un bon aperçu, mais mon GridView est databound pendant Page_Load déjà. Je pense que je vais aussi me pencher sur OnItemCommand. Merci pour ça! Cependant, j'ai essayé de prendre un asp: Bouton en dehors de la GridView, et cela n'a pas non plus déclenché son crochet côté serveur. Bizarre. –

Questions connexes