58 messaggi dal 11 maggio 2002
Salve ho un sito di ecommerce e lo sto portando su asp.net 2. Sto usando il gridview al posto del componente datagrid . Dovrei inserire nel carrello i valori di una riga come facevo prima con il datagrid dove scrivevo nell'evento itemcommand ad esempio :

objCommand1.Parameters.Add(New SqlParameter("@CodiceArt", SqlDbType.VarChar, 21))
objCommand1.Parameters.Item("@CodiceArt").Value = (e.Item.Cells(1).Text)
passando gli indici tutto funzonava a meraviglia. Ora nel gridview ci sta l'evento Rowcommand se non voglio creare delle templatecolumn e richiamarle con il findcontrol come posso richiamare il valore della cella ????
Ho provato cosi ma nulla :
grdRicerca.Rows.Item(1).Cells.ToString

grdRicerca.Rows.Item(1).Cells(1).Text (non mi da errore ma i valori sono vuoti o sballati..

Qualcuno puo' illuminarmi ??? sembra una stronzata pero' possibile che devo trasformare tutto in templatecolumn???


ti posto una porzione di codice ricavata da msdn, dovebbe fare al caso tuo.

ciao marco

 Sub CustomersGridView_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs)

    ' If multiple buttons are used in a GridView control, use the
    ' CommandName property to determine which button was clicked.
    If e.CommandName = "Add" Then
    
      ' Convert the row index stored in the CommandArgument
      ' property to an Integer.
      Dim index As Integer = Convert.ToInt32(e.CommandArgument)
            
      ' Retrieve the row that contains the button clicked 
      ' by the user from the Rows collection.
      Dim row As GridViewRow = CustomersGridView.Rows(index)
            
      ' Create a new ListItem object for the customer in the row.     
      Dim item As New ListItem()
      item.Text = Server.HtmlDecode(row.Cells(2).Text)
            
      ' If the customer is not already in the ListBox, add the ListItem 
      ' object to the Items collection of the ListBox control. 
      If Not CustomersListBox.Items.Contains(item) Then
      
        CustomersListBox.Items.Add(item)
        
      End If
      
    End If
    
  End Sub

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

http://nostromo.spaces.live.com/default.aspx
58 messaggi dal 11 maggio 2002
il problema è che questo codice che tu hai postato si riferisce a quel valore index a sua volta riferito al commandargument . Io qui uso solo il commandname che è "addtocart" e poi la procedura non ho bisogno di un commandargument.(cosi mi funzionava nel datagrid)
Non ci sta un modo nel metodo RowCommand per ottenere i valori delle celle della riga su cui sto cliccando ??? Non è possibile !!!

Ecco tutta la procedura....

Protected Sub grdRicerca_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles grdRicerca.RowCommand

Dim objTextbox As String = Convert.ToString(grdRicerca.FindControl("txtQtaArtric"))

If e.CommandName = "addtocart" Then

Dim objConnection1 As SqlConnection = New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("ASTROTEKSITO2KSRWEB").ConnectionString)

Dim objCommand1 As SqlCommand = New SqlCommand
objCommand1.Connection = objConnection1

objCommand1.CommandText = "INSERT INTO tblShoppingCart(UserID, CodiceArt, Produttore, Descrizione, Quantita, Prezzo)" & _
"VALUES(@UserID,@CodiceArt,@Prd,@Descri,@Qt,@Prz)"

objCommand1.Parameters.Add(New SqlParameter("@UserID", SqlDbType.VarChar, 4))
objCommand1.Parameters.Item("@UserID").Value = utente

objCommand1.Parameters.Add(New SqlParameter("@CodiceArt", SqlDbType.VarChar, 21))
objCommand1.Parameters.Item("@CodiceArt").Value = (grdRicerca.Rows().Item.Cells(2).Text)

objCommand1.Parameters.Add(New SqlParameter("@Prd", SqlDbType.VarChar, 16))
objCommand1.Parameters.Item("@Prd").Value = grdRicerca.Rows.Item(2).Cells.ToString

objCommand1.Parameters.Add(New SqlParameter("@Descri", SqlDbType.VarChar, 120))
objCommand1.Parameters.Item("@Descri").Value = grdRicerca.Rows.Item(4).Cells.ToString

objCommand1.Parameters.Add(New SqlParameter("@Qt", SqlDbType.VarChar, 4))
objCommand1.Parameters.Item("@Qt").Value = "1" 'objTextbox.ToString

objCommand1.Parameters.Add(New SqlParameter("@Prz", SqlDbType.Float, 8))
objCommand1.Parameters.Item("@Prz").Value = grdRicerca.Rows.Item(6).Cells.ToString

'Try
objConnection1.Open()
objCommand1.ExecuteNonQuery()
objConnection1.Close()
' Catch
'Response.Write("Spiacenti ma ci sono alcuni problemi tecnici")
' End Try

Totali() 'aggiorna totali
BindMotoreRicerca()

ElseIf e.CommandName = "addtopreferiti" Then

Dim objConnection1 As SqlConnection = New SqlConnection(Application("sqlConnection"))

Dim objCommand1 As SqlCommand = New SqlCommand

objCommand1.Connection = objConnection1

objCommand1.CommandText = "INSERT INTO tblpreferiti(Codice,IdCliente,Ragionesociale)" & _
"VALUES(@CodiceArt,@UserId,@Ragsoc)"

objCommand1.Parameters.Add(New SqlParameter("@CodiceArt", SqlDbType.VarChar, 21))
objCommand1.Parameters.Item("@CodiceArt").Value = grdRicerca.Rows.Item(1).ToString

objCommand1.Parameters.Add(New SqlParameter("@UserID", SqlDbType.VarChar, 10))
objCommand1.Parameters.Item("@UserID").Value = utente

objCommand1.Parameters.Add(New SqlParameter("@Ragsoc", SqlDbType.VarChar, 80))
objCommand1.Parameters.Item("@Ragsoc").Value = Session("ragioneSociale")

Try
objConnection1.Open()
objCommand1.ExecuteNonQuery()

objConnection1.Close()
Catch
Response.Write("Spiacenti ma ci sono alcuni problemi tecnici")
End Try

Totali() 'aggiorna totali
End If
End Sub
forse mi sono spiegato male, il commandargument contiene l'indice, attravero l'indice della riga ricavi la riga e il valore che contiene la cella.


ciao marco

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

http://nostromo.spaces.live.com/default.aspx

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.