21 messaggi dal 02 ottobre 2012
Ciao a tutti,

Ho una GV contenente un bottone modifica di questo tipo:

<asp:CommandField ButtonType="Button" ShowEditButton="true" ShowCancelButton="true" />

E un evento OnSelectedIndexChanged sulla stessa gridview.

Il problema è che quando vado a cliccare sul bottone, mi scatena l'evento
OnSelectedIndexChanged e non quello del bottone.

Come posso risolvere?
Grazie!!
93 messaggi dal 25 maggio 2005
la gridview è agganciata ad un DataSource (object, sql o altro)?

se non è agganciata, devi gestire l'evento:
<asp:GridView onrowediting="GridView1_RowEditing" ...>

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) {}
21 messaggi dal 02 ottobre 2012
si è agganciata, il metodo row editing lo utilizzo già per modificare la riga e lo lancio premendo il bottone. il problema è che ho associata alla gv anche l'evento selected index changed, e questo mi fa svanire l'effetto del bottone.
Spero di essermi spiegato...
93 messaggi dal 25 maggio 2005
non ho ben capito.
mi fai vedere il markup della griglia e del datasource?
21 messaggi dal 02 ottobre 2012
<asp:GridView ID="GridViewValutazioneInterna" runat="server" DataKeyNames="ID" AutoGenerateColumns="false" onrowcancelingedit="GridViewValutazioneInterna_RowCancelingEdit" onrowediting="GridViewValutazioneInterna_RowEditing" onrowupdating="GridViewValutazioneInterna_RowUpdating"
OnSelectedIndexChanged ="gridViewValutazioneInterna_selectedIndexChanged"
OnRowDataBound="RowDataBoundValutazioneInterna">
<Columns>
<asp:CommandField ButtonType="Button" ShowEditButton="true" ShowCancelButton="true"/>


c#


protected void GridViewValutazioneInterna_RowEditing(object sender, GridViewEditEventArgs e)
{
GridViewValutazioneInterna.EditIndex = e.NewEditIndex;
caricaDataGridValutazioneInterna(TextBoxID.Text);
}


protected void RowDataBoundValutazioneInterna(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onclick",ClientScript.GetPostBackEventReference(GridViewValutazioneInterna, "Select$" +
e.Row.RowIndex.ToString()));
e.Row.Style["cursor"] = "pointer";
}
}

protected void gridViewValutazioneInterna_selectedIndexChanged(object sender, EventArgs e)
{
GridViewRow row = GridViewValutazioneInterna.SelectedRow;
TextBoxIdUtenteNascosto.Text = row.Cells[1].Text;
caricaDataGridValutazioneCompetenze(row.Cells[1].Text);

}
21 messaggi dal 02 ottobre 2012
sostanzialmente,

In una sola gv ho un bottone e il metodo onselectedindexchanged.
La funzione del bottone non viene mai richiamata perchè è "sovrastata" dalla funzione OnSelectedIndexChanged.
93 messaggi dal 25 maggio 2005
dal codice che vedo, la griglia non è agganciata a nessun DataSource in design.
Comunque, questo non è il problema. Il problema sta qui:
protected void RowDataBoundValutazioneInterna(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.Attributes.Add("onclick", ClientScript.GetPostBackEventReference(GridViewValutazioneInterna, "Select$" +
        e.Row.RowIndex.ToString()));
        e.Row.Style["cursor"] = "pointer";
    }
}

In questo modo hai creato un evento client-side che viene lanciato SUBITO, appena clicchi in qualsiasi punto della riga, e lancia il SELECT.
Per questo che ti va sempre nel gestore SelectedIndexChanged.

Devi togliere questa parte se vuoi che funzioni.
21 messaggi dal 02 ottobre 2012
si scusa, non ti ho postato il caricamento della gridview, e come posso fare a lanciare un metodo cliccando su qualsiasi posto della gridview?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.