2009-06-03 7 views
0

Quel est sytnax correct pour la fixation d'un AsyncPostBackTrigger pour un UpdatePanel avec un asp:ButtonField d'un contrôle GridView?Définir un déclencheur async pour un panneau de mise à jour avec un asp GridView: ButtonField

Dois-je définir un 'AsyncPostBackTrigger' pour chaque asp: ButtonField dans mon GridView

Voici mon code source

<asp:UpdatePanel ID="MyUpdatePanel" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional"> 
    <Triggers> 
    </Triggers> 
    <ContentTemplate> 
     <asp:GridView ID="MyGridView" runat="server" AutoGenerateColumns="false">  
      <Columns>   
       <asp:ButtonField ButtonType="Link" CommandName="Button1" SelectText="Click Me!" />   
       <asp:ButtonField ButtonType="Link" CommandName="Button2" SelectText="No Click Me!" />  
      </Columns> 
     </asp:GridView> 
    </ContentTemplate> 
</asp:UpdatePanel> 

Mise à jour

je dois garder le UpdateMode et ChildrenAsTriggers attributs mis à vrai parce que j'ai un autre bouton contenu dans le UpdatePanel qui ne rafraîchit pas leLe contrôle

Répondre

0

La propriété ChildrenAsTriggers étant définie sur true entraînera tout contrôle qui provoque une publication dans le panneau de mise à jour pour provoquer son actualisation. Vous n'auriez besoin d'utiliser l'élément triggers que si vous aviez un contrôle en dehors du panneau de mise à jour que vous souhaitiez utiliser pour déclencher l'actualisation de ce panneau de mise à jour. Vous n'avez même pas besoin de l'élément triggers dans cette instance.

+0

voir commentaire adressé à Josh –

0

Tout ce que Lance Harper mentionné est vrai, mais vous devez également supprimer l'attribut suivant:

UpdateMode="Conditional" 

Ayant cet attribut en place empêchera le fil-up automatique de vos événements côté client. Essentiellement, vous dites à ASP.Net que vous allez le faire vous-même.

+0

Je souhaite que l'attribut conditionnel soit défini sur true car des boutons dans le panneau ne provoquent pas l'actualisation du UpdatePanel. –

0

Pourriez-vous utiliser un champ de modèle au lieu d'un champ de commande et mettre à jour de force (UpdatePanel.Update()) le panneau lorsque vous cliquez sur le bouton de commande?

+0

J'avais un mauvais échantillon de code. Ce devrait être une colonne asp: ButtonField au lieu de la colonne asp: CommandField. J'ai mis à jour mon exemple de code –

+0

Je pense que ma suggestion fonctionnerait toujours. Utilisez un champ Modèle, exécutez la commande lorsque vous appuyez sur le bouton, puis mettez à jour le panneau. –