Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1

    Rimuovere riga da datagrid

    Io ho una datagrid che viene riempita da una query sql.
    Dopo aver fatto il DataBind sulla mia datagrid, faccio un ciclo su di essa, perchè devo fare dei controlli sui alcuni articoli, per ottenere la percentuale di sforamento tra due campi.

    Se la percentuale è minore di una soglia da me impostata allora devo rimuovere tutta la riga dalla datagrid.

    Come posso fare ???

    codice:
    sql = "ecc...."
    
    grdMissioniSforate.DataSource = ds.Tables["missioni_picking"];
    grdMissioniSforate.DataBind();
    
    foreach (DataGridItem item in grdMissioniSforate.Items)
    {
    
    sql = "select articoli eccc...."
    
    if(percentualePrelevato >= 20)
    {
        //percentuale buona
    }
    else
    {
       //percentuale non buona devo togliere riga
       grdMissioniSforate.Rows.Remove(grdMissioniSforate.Rows[i]);
    }
    
    
    }
    Come posso fare a rimuovarla ???
    Spago

    [Officials Sites]
    http://www.hobbybirra.it/spaghetto/

  2. #2
    Invece di rimuovere la riga dalla datagrid potresti rimuoverla dalla datasource. Un modo piuttosto versatile per farlo e' utilizzare una dataview, impostando il filtro "percentualePrelevato >= 20" nella proprieta' rowfilter della dataview e passando la dataview filtrata alla datagrid piuttosto che il dataset.
    Saluti a tutti
    Riccardo

  3. #3
    Caspita è vero, non ci avevo proprio pensato.
    Mitica idea !!!
    Non è che voglio la pappa pronta, ora cerco qualche esempio, ma non è che potresti se hai tempo, illustrarmi un esempio di codice ???

    Grazie :maLOL:
    Spago

    [Officials Sites]
    http://www.hobbybirra.it/spaghetto/

  4. #4
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Validissimo il metodo consigliatoti da Riccardone, ma se i valori che non ti interessano li elimini direttamente dalla query è ancora meglio.
    Almeno non scarichi dal db dei dati inutilmente e poi non devi filtrarli ulteriormente utilizzando il dataview(Non è un'operazione a costo 0)e sql a livello di performance è sicuramente meglio.
    Scusate la puntigliosità, il mio è solo un consiglio.
    Ciao
    Legnetto

  5. #5
    Originariamente inviato da spago
    Non è che voglio la pappa pronta, ora cerco qualche esempio, ma non è che potresti se hai tempo, illustrarmi un esempio di codice ??
    ecco un po' di pappa gia' cucinata
    codice:
    DataView dv = new DataView(ds.Tables["missioni_picking"]);
    dv.RowFilter = "percentualePrelevato >= 20";
    Saluti a tutti
    Riccardo

  6. #6
    Hai ragione legnetto, ma se fosse come dici te l'avrei già fatto !!!
    Invece io devo fare una prima query e metterla in un DataSet e riempire una datagrid, poi fare dei controlli su ogni riga ed eventualmente eliminare le righe che sforano dalla percentuale della seconda query !!! VVoVe:
    Quindi sarebbe corretto anche il suggerimento di riccardone, di fare i controlli sul dataset, solo che non ho capito ancora come funziona quel DataView !!! :master:

    Ho provato anche in questo modo:

    codice:
    for(int i=0; i<ds.Tables["missioni_picking"].Rows.Count; i++)
    {
        if(percentualePrelevato <= 20)
             ds.Tables["missioni_picking"].Rows.Remove(ds.Tables["missioni_picking"].Rows[i][0]);
    }
    ma non funziona !!!
    Spago

    [Officials Sites]
    http://www.hobbybirra.it/spaghetto/

  7. #7
    Originariamente inviato da spago
    ...poi fare dei controlli su ogni riga ed eventualmente eliminare le righe che sforano dalla percentuale della seconda query !!! VVoVe:
    Quindi sarebbe corretto anche il suggerimento di riccardone, di fare i controlli sul dataset, solo che non ho capito ancora come funziona quel DataView !!!
    il dataview e' un oggetto molto utile quindi ti consiglio di approfondire leggendo nella documentazione in linea e/o su msdn. Cmq hai provato il codice che ti ho postato in precedenza?
    Tips... Ogni datatable ti presenta gia' un oggetto dataview preconfezionato e pronto da usare. Puoi accedervi cosi...
    codice:
    ds.Tables["missioni_picking"].DefaultView.RowFilter = "percentualePrelevato <= 20"
    e quindi passare alla grid direttamente
    codice:
    ds.Tables["missioni_picking"].DefaultView
    Ho provato anche in questo modo
    se devi scorrere le righe di una datatable e' consigliabile l'utilizzo del foreach
    codice:
    foreach (System.Data.DataRow _dr in dt.Rows)
    {
     // qui puoi inserire il codice per leggere la datarow _dr	
    }
    Saluti a tutti
    Riccardo

  8. #8
    se devi scorrere le righe di una datatable e' consigliabile l'utilizzo del foreach
    codice:
    foreach (System.Data.DataRow _dr in dt.Rows)
    {
     // qui puoi inserire il codice per leggere la datarow _dr	
    }
    Buona quest'ultima, infatti mi sa che mi conviene associare il dataset ad un datatable, e poi ciclare come mi hai mostrato te, e ho visto che esiste un metodo Remove per eliminare una riga.
    Ma come si istanzia un DataTable e gli si associa il DataSet ???
    E poi alla Datagrid gli come faccio ad associargli il DataSet come DataSource, glui dovrò associare il DataTable ???
    Spago

    [Officials Sites]
    http://www.hobbybirra.it/spaghetto/

  9. #9
    Ma come si istanzia un DataTable e gli si associa il DataSet ???
    codice:
    ds.tables.add(tuadatatable);
    Se stai utilizzando una unica datatable, il dataset puoi scordartelo. Istanzia e usa la singola datatable che ti serve.
    Tornando alla necessita' che hai segnalato inizialmente, ti ripeto che ti conviene utilizzare una dataview. La dataview ti permette di mantenere i record senza doverli eliminare ma di filtrarli in base a delle condizioni (similmente a quanto in parte accade con la condizion where dell'sql).
    Una volta che hai preparato la dataview (di esempi te ne ho postati gia' due) puoi associare alla datagrid cosi
    codice:
    dtMissioni_picking.DefaultView.rowfilter = "percentualePrelevato <= 20";
    dg.datasource = dtMissioni_picking.DefaultView;
    Saluti a tutti
    Riccardo

  10. #10
    Invece non si potrebbe eliminare la riga completa dalla DataGrid dopo ???
    Spago

    [Officials Sites]
    http://www.hobbybirra.it/spaghetto/

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.