GridView1_RowEditing

domenica 22 gennaio 2012 - 10.26
Tag Elenco Tags  C#  |  .NET 3.5  |  Visual Studio 2008  |  Access (.mdb)

paolo973 Profilo | Senior Member

in una gridview ogni riga contiene un campo LabelTest contenente numeri separati da virgola.
come riferirmi a tale LabelTest nella fase di modifica di una riga della gridview?

page.aspx
...
<EditItemTemplate>
<asp:Label ID="LabelTest" runat="server" ></asp:Label>
</EditItemTemplate>
...

in fase di modifica uso l'evento
page.aspx.cs
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
come riferire la LabelTest?
}

Gluck74 Profilo | Guru

ciao,
il gestore dell'evento in questione, ha come argomento un oggetto di tipo GridViewEditEventArgs, che fornisce un dato importante:
NewEditIndex.
Rappresenta l'indice della riga che sta per essere modificata. Possiamo usare questo indice per andare a prelevare dalla griglia la riga corrispondente ed i controlli contenuti in essa. Ecco il codice:
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView grd = sender as GridView; GridViewRow grdRow = grd.Rows[e.NewEditIndex]; Label lbl = grdRow.FindControl("LabelTest") as Label; ... }
ciao

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

paolo973 Profilo | Senior Member

continuando il tuo codice
...
lbl.Text = "Hello";

quando vado in modifica ricevo questo errore:

System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto.

sulla riga lbl.Text = "Hello";

dove sta l'errore?

Gho5t Profilo | Junior Member

ciao, prova a mettere -1 quando prendi l'indice della riga...

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView grd = sender as GridView; GridViewRow grdRow = grd.Rows[e.NewEditIndex - 1]; Label lbl = grdRow.FindControl("LabelTest") as Label; ... }
Se un uomo non è disposto a correre qualche rischio per le sue idee, o le sue idee non valgono nulla o non vale nulla lui

paolo973 Profilo | Senior Member

sempre lo stesso errore

Riferimento a un oggetto non impostato su un'istanza di oggetto.

Gho5t Profilo | Junior Member

Ciao,
potresti passarmi il codice della griglia completo (così da fare le prove con i tuoi stessi parametri)?
Se un uomo non è disposto a correre qualche rischio per le sue idee, o le sue idee non valgono nulla o non vale nulla lui

paolo973 Profilo | Senior Member

page.aspx

<asp:AccessDataSource ID="AccessDataSourceGridView1" runat="server" DataFile="my.mdb" ConflictDetection="CompareAllValues" SelectCommand="SELECT * FROM [tbl1] ORDER BY [id1] DESC" >
</asp:AccessDataSource>


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
Font-Names="Arial Narrow" RowStyle-HorizontalAlign="Center"
CellPadding="2" DataKeyNames="id1" DataSourceID="AccessDataSourceGridView1"
ForeColor="#333333" GridLines="None"
OnRowUpdating ="GridView1_RowUpdating"
OnRowDatabound="GridView1_RowDataBound"
OnRowEditing ="GridView1_RowEditing"
OnRowUpdated ="GridView1_RowUpdated"
Width="500px" AllowSorting="True">
<RowStyle BackColor="#EFF3FB" HorizontalAlign="Center" />
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="idProdotto"
HeaderText="ID" InsertVisible="False"
ReadOnly="True" SortExpression="id1"
Visible="True" />

<asp:TemplateField >

<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text="ONE" ></asp:Label>
</ItemTemplate>

<EditItemTemplate>
<asp:Label ID="Label742" runat="server" Text="A P P L I C A Z I O N I" Font-Names="Arial Narrow" Font-Bold="true" ForeColor="White" Font-Size="7pt"></asp:Label><br />
<asp:Label ID="LabelTest1" runat="server" Text="1,2,3,4,5,6" Font-Size="7pt" Font-Bold="true"></asp:Label>
</EditItemTemplate>
</asp:TemplateField>

</asp:TemplateField>
</Columns>
</asp:GridView>



page.aspx.cs

protected void GridViewProdotti_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView grd = sender as GridView;
GridViewRow grdRow = grd.Rows[e.NewEditIndex];
Label lbl = grdRow.FindControl("LabelTest1") as Label;
lbl.Text = "testo modificato";
}

Gluck74 Profilo | Guru

ciao, ho controllato bene il funzionamento della griglia.
nell'evento RowEditing, la riga non ha ancora cambiato template, e sta ancora usando l'ItemTemplate.
Quindi la label che è nel EditItemTemplate non può esistere.

Cosa vorresti fare di preciso?
per trovare quella label bisogna agire in altra maniera.
Spiegami cosa vuoi fare.

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

paolo973 Profilo | Senior Member

ho una gridview con una label per ogni riga che contiene una serie di numeri.

quando vado in modifica, desidero usare tali numeri per poter interrogare il database.

come fare ?

Gluck74 Profilo | Guru

non ho capito un gran che........
comunque, metti questa label nel ItemTemplate, in questo modo quando gestisci l'evento Editing, puoi prelevare il valore ed usarlo prima che la riga venga impostata in EditMode

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

paolo973 Profilo | Senior Member

ho una gridview

ID.....DESCRIZIONE.......AUX
1......scarpe...............1,4,6,8
2......calze.................3,5
4......pantaloni............4,6,7,8,9,12

associata ad una tabella tbl1

la colonna AUX è composta dagli ID delle marche
quindi si hanno scarpe di 4 marche diverse, calze di due marche solamente etc

in <ItemTemplate> ho quindi tre label
labelID
labelDESCRIZIONE
labelAUX

fin quì funziona.

desidero sia in visualizzazione che in modifica avere:

in visualizzazione al posto della labelAUX piena di numeri, avere una serie di marche
in modifica avere una CheckBoxList con selezionate solo le marche che trovo nella labelAUX

Gluck74 Profilo | Guru

questo è un problema identico

http://forum.html.it/forum/showthread.php?s=&threadid=1493755


____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5