none
recupero record da gridview RRS feed

  • Domanda

  • ciao,

    ho una gridview con un template filed contenente una checkbox, con valore autopostback impostato su true.

    devo gestire l'evento checked changed, dove in base al suo valore devo fare delle azioni su un db.

    il problema è che dall'interno del gestore evento non riesco ad ottenere l'intero record relativo a quello in cui è stato eseguito il check o l'uncheck..

    come posso recuperarlo?

    venerdì 18 giugno 2010 12:40

Risposte

  • Premetto che di solito non utilizzo il sqlDatasource, comunque io metterei un imagebutton per ogni Azione e ad ognuno di questi passerei nel RowDataBound del dataGrid il CommandName per stabilire il comportamento e nel CommandArgument i dati che servono per l'esecuzione dell'Azione voluta.

    Poi basta gestire l'Azione vera e propria nel RowCommand del dataGrid.

    Ciao

    LCO (congiuluc)

    venerdì 18 giugno 2010 19:34
    Moderatore

Tutte le risposte

  • Io metterei l'id del record nel value della checkbox e poi andrei a recuperare il record direttamente dalla sorgente dati (datatable).

    Ciao

    LCO (congiuluc)

    venerdì 18 giugno 2010 12:54
    Moderatore
  • ma in che modo lo recupero dal gestore evento checked changed..? e come dico di assumere alla proprietà value il valore dell'id..?
    venerdì 18 giugno 2010 13:16
  • Devi aggiungere un handler alla checkbox nel rowdatabound della griglia:

     

        Dim check As CheckBox
        check = e.Row.FindControl("chkId")
        If Not IsNothing(check) Then
          check.InputAttributes.Add("Value", id)
        End If
        AddHandler check.CheckedChanged, AddressOf chkId_CheckedChanged

     

    E poi il metodo chkId_CheckedChanged

      Protected Sub chkId_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim IdValue As Integer
        IdValue = Convert.ToInt32(CType(sender, CheckBox).InputAttributes("Value"))
        ....
      End Sub

    All'interno del quale poi recuperare i dati di cui hai bisogno attraverso la chiave.

    Ciao

    LCO (congiuluc)

     

     

     

    venerdì 18 giugno 2010 14:09
    Moderatore
  • chiedo scusa, ho lo stesso problema con un campo image.

    rappresenta una immagine di cancellazione record, devo gestire l'evento click e anche in questo caso non so come recuperare l'id del record da eliminare...

    venerdì 18 giugno 2010 14:45
  • dunque mi rispondo da solo, vorrei sapere se sia "corretto" come procedimento:

    ho impostato il valore alternateText dell'imageButton che si trova nella mia gridview (dentro un template filed) a = eval(campoId);

    dentro il gestore evento click eseguo la conversione dell'oggetto sender in imageButton e mi recupero l'id del recordo tramite la proprietà alternatetext..solo che mi sembra uno "spreco" dal momento che l'istruzione eval(campoId) è gia presente sul templatefiled relativo alla colonna id..

    è comunque corretto il mio modo di agire?

    venerdì 18 giugno 2010 15:12
  • Se è un imagebutton perchè non usi il commandArgument?

    LCO (congiuluc)

    venerdì 18 giugno 2010 15:17
    Moderatore
  • Ma siamo alle solite, nel senso che per impostare il commandArgument dovrei eseguire un ulteriore Eval relativo al campo del sqldatasource dentor il codice aspx.

    Comunque, prendendo spunto da una risposta precedente, ho ulteriormente modificato le cose:

    poichè per ogni oggetto della gridView ho bisogno di eseguire azioni in base a 3 campi del record selezionato,

    all'interno del rowdataBound aggiungo 3 attributi per gli oggetti che mi interessano e penso di aver risolto in questo modo.

    venerdì 18 giugno 2010 16:55
  • Premetto che di solito non utilizzo il sqlDatasource, comunque io metterei un imagebutton per ogni Azione e ad ognuno di questi passerei nel RowDataBound del dataGrid il CommandName per stabilire il comportamento e nel CommandArgument i dati che servono per l'esecuzione dell'Azione voluta.

    Poi basta gestire l'Azione vera e propria nel RowCommand del dataGrid.

    Ciao

    LCO (congiuluc)

    venerdì 18 giugno 2010 19:34
    Moderatore