Ciao! io ho inserito una colonna con delle checkbox nel mio datagrid. Adesso vorrei sapere come faccio, quando genero l'evento oncheckedchange cliccandoci sopra, a recuperare l'indice della riga su cui ho cliccato
ciao e grazie
Ciao! io ho inserito una colonna con delle checkbox nel mio datagrid. Adesso vorrei sapere come faccio, quando genero l'evento oncheckedchange cliccandoci sopra, a recuperare l'indice della riga su cui ho cliccato
ciao e grazie
Così su due piedi ti direi di scorrere il DataGrid
controllando riga per riga se la CheckBox ha il
checked a true.
Forse però puoi fare così (non ho il tempo di provarlo):
codice://File .aspx <asp:CheckBox id="CheckBoxElimina" OnCheckedChange="VisualizzaCeccato" CommandArgument='<%# DataBinder.Eval(Container, "DataItem.IDTupla") %>' runat="server"></asp:CheckBox> //File .aspx.cs public void VisualizzaCeccato(object sender, System.Web.UI.WebControls.CommandEventArgs e) { Response.Write("Hai selezionato: "+ e.CommandArgument.ToString()); }
Ciao, nic.
Ciao! se faccio come mi hai scritto mi dice che la proprietà CommandArgument nella checkbox non è presente ma mi fà eseguire comunque...ma quando apro la pagina mi dice:
Method 'Public Sub chkSpeciale_Change(sender As Object, e As System.Web.UI.WebControls.CommandEventArgs)' does not have the same signature as delegate 'Delegate Sub EventHandler(sender As Object, e As System.EventArgs)'.
non gli piace il System.Web.UI.WebControls.CommandEventArgs
...devo riuscire a recuperare l'id della riga in cui è stato ceccato la checkbox...hai qualche altra idea? grazie...ciao
Hai anche ragione, la ChackBox non ha qulla proprietà.
Mmmmm una soluzione spartana é la seguente:
File .aspx
File .aspx.cscodice:<asp:CheckBox id="CheckBox2" runat="server" OnCheckedChanged="stampapino" AutoPostBack="True"></asp:CheckBox>
Testato e funzionacodice:public void stampapino(object sender, System.EventArgs e) { int checkato=-1; for (int i=0;i<DataGrid1.Items.Count;i++) { if (((CheckBox)DataGrid1.Items[i].FindControl("CheckBox2")).Checked==true) checkato=i; } Response.Write(checkato); }
Ciao, nic.
ma se c'è più di un elemento cekkato funziona lo stesso?
provato, ma se ce ne sono più selezionati restituisce l'id dell'ultimo
Naturalmente.
Tu di cosa hai bisogno?
Puoi farti dare la lista di tutte quelle selezionate nel seguente modo:
codice:public void stampapino(object sender, System.EventArgs e) { int checkato=-1; for (int i=0;i<DataGrid1.Items.Count;i++) { if (((CheckBox)DataGrid1.Items[i].FindControl("CheckBox2")).Checked==true) Response.Write(i); } }
Ciao, nic.
a me serve l'id dell'ultima cekkata...cioè quando clicco su casella nella riga 2 mi deve restituire 2 anche se ce ne sono altre già cekkate
per questo che ti dicevo che la soprastante é una soluzione spartana, perché adesso per avere l'ultimo checked non é mica tanto facile....
Dovresti tenere traccia delle checkbox checked in un array che di volta in volta ti aggiorni aggiungendo o togliendo indici (che corrispondono alle checkbox checked) e confrontando quando ne checchi una se é già presente nell'array allora non ultima, altrimenti é l'ultima.
Sarebbe meglio riuscire a farsi dare dalla checkbox del datagrid l'informazione dell'indice della riga a cui appartiene, ma non so se questo é possibile.
Ciao, nic.
infatti...è quello che stò cercando di fare...devo riuscire a far passare l'id della riga attraverso qualche proprietà della check...per poterlo così recuperare...se ti viene in mente qualche idea io sono qui...per adesso ti ringrazio