10 messaggi dal 19 giugno 2013
ciao, sto lavorando con una gridview e con lo stesso metodo che ho gia' usato in altre applicazioni e sempre funzionanti, ma in questo caso ho un problema e non capisco perche'.
ho una griglia del tipo
<asp:GridView ID="gv1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID1" OnRowDataBound="gv1_RowDataBound" OnRowCommand="gv1_RowCommand">
<RowStyle CssClass="riga-elenco-dispari" />
<AlternatingRowStyle CssClass="riga-elenco-pari" />
<Columns>
<asp:TemplateField HeaderText="Risultati">
<HeaderStyle CssClass="elenco" />
<ItemTemplate>
<asp:ImageButton ImageUrl="~/img/Next.gif" ID="btn1" runat="server"  CommandName="Select" CausesValidation="false" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

quello che a me serve &egrave; poter recuperare, per la riga selezionata (tramite l'imgeButton) l'ID1 corrispondente per quella riga. come ho sempre fatto lavoro con il command name "Select" e tramite il RowCommand eseguo solitamente codice del tipo:
protected void gv1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Select")
{
 int index = Convert.ToInt32(e.CommandArgument);
 GridViewRow row = gvComuniVoto.Rows[index];
 int ID1 = (int)gv1.DataKeys[index].Values["ID1"];
.........
}
}

il problema &egrave; che quando arrivo alla riga
int index = Convert.ToInt32(e.CommandArgument); 
mi da errore di "formato stringa non corretto" perche' nel GridViewCommandEventArgs prende il valore del commandName ma non del commandArgument e non capisco perche'...sapete aiutarmi?? grazieeeee
Perché nell'ImageButton non hai specificato il CommandArgument... quindi è vuoto e fallisce la conversione a int. Se vai per indice (ma potresti meglio specificare direttamente l'id) aggiungi CommandArgument=<%# Container.DataItemIndex%> oppure il rowindex

Ormai programmano tutti... ma la professionalità appartiene a pochi
10 messaggi dal 19 giugno 2013
D'accordo, ma perchè allora nelle altre applicazioni a cui ho lavorato il command argument non viene specificato eppure nel code behid quando lo si estrae nel RowCommand lo tira su lo stesso? è li che mi si blocca il cervello...
ovviamente grazie per l'aiuto :-)
se hai il codice relativo ci guardiamo. Magari il commandargument veniva impostato dal code behind? o da una classe dalla quale la tua pagina derivava? Non penso che andassi a impostare manualmente il Viewstate (il commandargument viene salvato nel viewstate)

Ormai programmano tutti... ma la professionalità appartiene a pochi

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.