Domanda

Ho un GridView con una CheckBox ASP 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 eseguo 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 viene colpito. Il mio debugger di Visual Studio è in esecuzione.

Inoltre, non ho AutoEventWireup = True nella mia pagina defnizione in modo da non dover agganciare manualmente l'evento. Non ho mai avuto un problema facendo in questo modo prima d'ora. Ho un tasto sulla stessa impostazione di pagina esattamente allo stesso modo con un evento click e il punto di interruzione viene colpito bene in questo.

Tutte le idee?

È stato utile?

Soluzione

L'evento di postback per il controllo casella di controllo non si attiva correttamente perché è all'interno di una GridView che storpia l'ID del controllo.

Se avete bisogno della casella di controllo in modo da riflettere i dati è possibile utilizzare il CheckBoxField oggetto e rilegare in quel modo.

Se avete bisogno eseguire un'azione per la riga, si consiglia di guardare il ButtonField oggetto utilizzando il CommandName proprietà e la RowCommand evento.

Ci sono modi per accedere alle caselle di controllo all'interno del lato server GridView .

Altri suggerimenti

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

Il problema si verifica quando DataBind viene chiamato prima che l'evento di controllo sta sparando. Se si chiama DataBind in Page_Load metterlo in if (!isPostBack) {} e call DataBind nel gestore evento stesso.

Prova:

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

Assicurarsi che la pagina aspx ha CodeFile = "YOUR_FILE.aspx.cs" in alto.

Si veda anche fare in modo che la vostra funzione MyCheckChangedMethod è definito come

funzione dovrebbe avere object sender, EventArgs e.

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

Assicurarsi inoltre che il web.config è di debug impostata su true (si pensi già fatto).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top