OnCheckedChanged evento non sparando nel GridView a tutti

Ho una GridView con un asp Casella di controllo in un TemplateField. Il TemplateField è definito come segue:

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

Quando ho eseguito il mio progetto web con un punto di interruzione all’interno MyCheckChangedMethod e fare clic sulla casella di controllo non succede nulla. Il punto di interruzione non è colpito. Il mio debugger di Visual Studio è in esecuzione.

Inoltre, ho AutoEventWireup = True nella mia pagina di definizione, quindi non ho il manuale di agganciare l’evento. Non ho mai avuto un problema facendo in questo modo prima. Ho un pulsante sulla stessa pagina di configurazione esattamente allo stesso modo con un evento click e il punto di interruzione viene colpito bene.

Tutte le idee?

OriginaleL’autore Adam | 2009-08-17

4 risposte

  1. 5

    Evento postback per il controllo casella di controllo non viene generato correttamente, perché è all’interno di una GridView che manipola l’ID del controllo.

    Se è necessario che la Casella di controllo per riflettere i dati è possibile utilizzare il CheckBoxField oggetto e si legano in quel modo.

    Se avete bisogno di eseguire un’azione per la riga, si potrebbe voler guardare il ButtonField oggetto utilizzando il Nomecomando proprietà e la RowCommand evento.

    Ci sono modi per l’accesso alle caselle di controllo all’interno del GridView lato server.

    OriginaleL’autore

  2. 6

    È necessario aggiungere AutoPostback = True in asp:CheckBox tag.

    OriginaleL’autore

  3. 5

    Il problema si verifica quando DataBind viene chiamato prima che l’evento di controllo è la cottura.
    Se si chiama DataBind in Page_Load mettere in
    if (!isPostBack) {} e chiamare DataBind nel gestore dell’evento stesso.

    OriginaleL’autore

  4. 0

    provare:

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

    Assicurarsi che la pagina aspx è CodeFile=”YOUR_FILE.aspx.cs” in alto.

    Anche vedere che la funzione MyCheckChangedMethod è definito come

    Funzione dovrebbe avere object sender, EventArgs e.

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

    Anche assicurarsi che il web.config ha debug impostato a true (si pensi già fatto).

    Il codefile è nell’intestazione del file. Come ho detto, in fondo, il mio evento click del pulsante funziona bene, è solo la Casella di controllo interno il controllo GridView che mi sta dando problemi. Inoltre, il codice che hai suggerito è la stessa esatta come il modo in cui la mia casella di controllo è definito in precedenza. E il metodo è definito correttamente con il corretto metodo di firma, con oggetto e EventArgs. Questo è perché il problema è così frustrante. So come impostare un evento attraverso ASP.net markup
    Era solo un suggerimento. Ho provato il codice della mia auto (senza griglia) che ha funzionato. La funzione di contenere un po ‘ di codice o è vuota?

    OriginaleL’autore

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *