Ottenere indice riga Gridview, con evento lato client

martedì 06 maggio 2008 - 12.07

GGno Profilo | Newbie

Ciao a tutti, ho messo un campo textbox html <input> nella cella di un gridview.
Al cambio di testo nel campo deve partire un un client callback per salvare il nuovo testo della textbox senza postback.

questo e' il codice lato html
<asp:TemplateField>
<HeaderTemplate>
Stato
</HeaderTemplate>
<ItemTemplate>
<input id="TextBoxStato" onchange="controllaTesto(this.id)" onselect="Niente()" onblur="Niente()"
onfocus="Niente()" maxlength="1" style="width: 20px; text-align: center" runat="server"
type="text" value='<%# Eval("stato") %>' />
</ItemTemplate>
</asp:TemplateField>

Il problema e' che ho bisogno di ottenere l'indice della riga, e per ora non ho modo di ottenerla.
C'e' modo di farlo senza utilizzare un campo command field?

Grazie.

freeteo Profilo | Guru

ciao,
se non ho capito male tu vuoi costruirti la chiamata al tuo javascript, utilizzando però un valore che hai solo quando viene renderizzata la griglia di asp.net (per ogni riga).
Se è così devi usare la stessa tecnica che ho usato qui:
http://blogs.dotnethell.it/freeteo/codice-asp.net-dentro-javascript__7505.aspx

e nel tuo caso costruirti una riga così:
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"> <Columns> <asp:TemplateField> <ItemTemplate> <div onclick='alert(<%# Eval("id") %>)'>Cliccami</div> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
nell'esempio chiamo un semplicissimo "alert" nel tuo caso chiami la funzione javascript che ti serve...

è questo che ti serviva?

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

GGno Profilo | Newbie

Grazie innanzitutto per la risposta.
Ho risolto in modo un po' diverso: ho creato una colonna nascosta con l'indice e nel rowDataBound e ho concatenato il client id del controllo textbox con il valore della cella nascosta

cosi':

TableCell cellText = e.Row.Cells[1];

HtmlInputText TextValore = cellText.Controls[1] as HtmlInputText;

TextValore.ID = cellText.ClientID + "¬" + e.Row.Cells[2].Text;

quando si scatena l'evento splitto i 2 valori ed e' fatta
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5