Question

J'ai un GridView avec un CheckBox asp dans un TemplateField. Le TemplateField est défini comme suit:

<asp:TemplateField HeaderText="HeaderName">
    <ItemTemplate>
        <asp:CheckBox ID="checkBoxId" runat="server" OnCheckedChanged="MyCheckChangedMethod" AutoPostBack="true"/>
    </ItemTemplate>
</asp:TemplateField>

Quand je lance mon projet web avec un point d'arrêt à l'intérieur MyCheckChangedMethod et cliquez sur la case à cocher rien ne se passe. Le point d'arrêt n'est pas touché. Mon débogueur Visual Studio est en cours d'exécution.

De plus, je AutoEventWireup = True dans ma page défnition donc je n'ai pas de brancher manuellement l'événement. Je ne l'ai jamais eu un problème de le faire de cette façon avant. J'ai un bouton sur la même mise en page exactement de même avec un événement de clic et le point d'arrêt est touché bien dans ce.

Toutes les idées?

Était-ce utile?

La solution

L'événement de publication pour le contrôle de case à cocher ne fonctionnera pas correctement le feu, car il est dans un GridView qui mutile l'ID du contrôle.

Si vous avez besoin de cases à cocher pour refléter les données que vous pouvez utiliser le CheckBoxField objet et se lient de cette façon.

Si vous avez besoin effectuer une action pour la ligne, vous pouvez regarder le l'objet de ButtonField en utilisant le CommandName propriété et le RowCommand événement.

Il y a plusieurs façons accéder aux cases à cocher dans le côté serveur GridView .

Autres conseils

Vous devez ajouter AutoPostback = True dans la balise asp:CheckBox.

Le problème se produit lorsque DataBind est appelé avant l'événement de commande de tir. Si vous appelez DataBind dans Page_Load mis en if (!isPostBack) {} et DataBind appel dans le gestionnaire d'événement lui-même.

essayer:

<asp:CheckBox  ID="checkBoxId" runat="server" AutoPostBack=true OnCheckedChanged="MyCheckChangedMethod"/>

Assurez-vous que la page ASPX a CodeFile = "YOUR_FILE.aspx.cs" en haut.

Voir aussi à ce que votre fonction MyCheckChangedMethod est définie comme

La fonction doit avoir l'expéditeur d'objet, EventArgs e.

public void MyCheckChangedMethod(object sender, EventArgs e)
{
  bool b = false;//your data here
}

Assurez-vous également que le web.config a déboguage true (pensez déjà fait).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top