13 messaggi dal 07 ottobre 2008
Ciao a tutti,

Sto utilizzando ASP.NET (code behind VB.NET).
Ho realizzato una Grdiview che viene popolata da VB (DBAccess - OleDBDataAdapter).
Ha questa Griview ho aggiunto come ItemTemplate un tasto delete ed un tasto Edit.
Il tasto delete lo richiamo in VB con:
If e.CommandName = "DeleteRow" Then
...cancella record...
e fin qui tutto ok.

Premedo il tasto Edit dovrei passare i dati della riga selezionata a delle TexTBox in un'altra pagina.
Il problema nasce quando vado a richiamare da VB l'evento EditRow:
If e.CommandName = "EditRow" Then
..
End if

Non saprei come fare...qualcuno potrebbe aiutarmi?
Io ho provato a mettere:
Try
TextBox1.Text = GridView1.SelectedRow.Cells(1).Text()
Catch
End Try

..ma non succede niente...
Grazie mille in anticipo
hai provato a inserire un punto di interruzione?

posta maggiori dettagli sul codice che stai utilizzando

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
13 messaggi dal 07 ottobre 2008
Ciao Marco,
Il problema è che credo che la riga della gridview non venga selezionata prima di prendere il valore...
Questo è il codice della gridview:
<asp:GridView ID="GridView1" runat="server" BackColor="White" BorderColor="#475217"
BorderStyle="Double" BorderWidth="3px" Width="887px">
<FooterStyle BackColor="White" ForeColor="#333333" />
<RowStyle BackColor="White" ForeColor="#333333" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnDelete" runat="server" CommandName="DeleteRow" CommandArgument='<%# Eval("ID") %>' OnClientClick="return confirm('Are you sure to delete this record?')" Text="Delete" BackColor="#475217" ForeColor="White" />
<asp:Button ID="BtnEdit" runat="server" CommandName="EditRow" CommandArgument='<%# Eval("ID") %>' Text="Edit" BackColor="#475217" ForeColor="White" />
</ItemTemplate>

Mentre questo è il codice VB:
Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) Handles GridView1.RowCommand

If e.CommandName = "DeleteRow" Then

Dim ID As Integer = Convert.ToInt32(e.CommandArgument)
Dim strConnection As String = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=c:\My Documents\Database CV\CV.mdb"
Dim conn2 = New OleDbConnection(strConnection)
conn2.Open()

Dim cmdDelete As New OleDbCommand("delete from CV where id=@id", conn2)
cmdDelete.Parameters.Add(New OleDbParameter("@id", SqlDbType.Int))
cmdDelete.Parameters("@id").Value = ID

Dim dr As OleDbDataReader
dr = cmdDelete.ExecuteReader()

dr.Read()


Dim GridView1 As New GridView
GridView1.DataSource = dr

GridView1.DataBind()

conn2.Close()
Response.Redirect("Admin.aspx")

Else

If e.CommandName = "EditRow" Then
Try
TextBox1.Text = GridView1.SelectedRow.Cells(1).Text()
Catch
End Try
End If

End If
End Sub

Praticamente mi dovrebbe prendere il valore della riga selezionata il quel momento tramite il tasto EDIT e passare il valore in una TextBox.

Grazie mille
Ciao
Simone
hai visto giusto, l'edit non seleziona la riga, cabia approccio, recupera l'idice della riga in modifica e recuperala dalla collezione Rows

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
13 messaggi dal 07 ottobre 2008
Grazie mille Marco per il tuo input. Ci siamo quasi.....:
Riesco a recuperare l'indice della riga cambiando il CommandArgument in ASP:
CommandArgument='<%# CType(Container,GridViewRow).RowIndex %>'
Poi in VB lo recupero in questo modo:
Dim index As Integer = Convert.ToInt32(e.CommandArgument)

Dim row As GridViewRow = GridView1.Rows(index)

Try
'TextBox1.Text = GridView1.SelectedRow.Cells(index).Text()
TextBox1.Text = String.Format("{0}", row.RowIndex)

Catch
End Try

...però(giustamente) mi dà l'indice della riga nella textbox...come faccio a prender il nome del campo della cella?

Grazie mille ancora
Ciao
Simone
13 messaggi dal 07 ottobre 2008
Scusate era una menata....bastava aggiungere:
TextBox1.Text = row.Cells(2).Text
:)
Ciao

Grazie mille per l'aiuto
Ciao
Simone
13 messaggi dal 07 ottobre 2008
...ho cantato vittoria troppo presto:(

Sono riuscito a passare i dati ad una o + textbox nella stessa pagina, ma ora il problema è che non riesco a paasare il valore ad un'altra pagina..

Praticamente ho questa Grdiview che quando si preme il pulsante EDIT (che è all'interno di un template field) dovrebbe passarmi il valore della cella in una textbox che si trova su un'altra pagina.
Sul sito msdn della microsoft c'è una spiegazione per passare valori tra pagine ASP.
Il problema è che poi nellla pagina di Microsoft c'è una nota che dice:

"The FindControl method finds controls in the current naming container. If the control you are looking for is inside another control (typically, inside a template), you must first get a reference to the container, and then search the container to find the control that you want to get".

Io appunto ho il tasto edit all'interno di un template....qualcuno potrebbe aiutarmi?

Grazie mille
Ciao
Simone

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.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC