296 messaggi dal 09 marzo 2001
In VB
Una volta "riempito" un DG, faccio una selezione multipla e poi vorrei avere tutti i record selezionati ...
Come faccio ?
Possibile che devo ciclare tutto il mio DG e controllare la proprietà is Checked ?
non c'è un metodo tipo
Dg.GetSelectedItem ... che restituisce una collection di righe selezionate ?

Thaks ...
Help ! :-)
SelectedItem restituisce un oggetto DataGridItem e non una collection.
Comunque, che male c'e' nel "ciclare"?
Le strutture iterative esistono e sono molto utilizzate anche dal .NET Framework stesso.

Se lo ritieni opportuno, puoi crearti un custom control, che estende il classico DataGrid, e aggiungervi un metodo che ti restituisce una collection di oggetti DataGridItem.
Ma il gioco vale la candela?

Nicola Baldi
"Make things as simple as possible, but not simpler."
>>> My blog <<<
296 messaggi dal 09 marzo 2001
Sono arrivato a questo punto ..
Ma :
Private Function GetSelectedItem(ByVal dg As DataGrid) As DataTable
Dim DtApp As DataTable
'clono la struttura
Dim mydv As DataView
Dim drv As DataRowView

'prendo la Table
'dtApp = Myds.Tables(0)
DtApp = dgFiles.DataSource
Dim DtResult As DataTable = DtApp.Clone()
DtResult.Clear()
'applico il dataview
mydv = DtApp.DefaultView
'Filtro il Dataview
mydv.RowStateFilter = DataViewRowState.CurrentRows

'mydv.RowFilter = "IsSelected = 1"

Dim Nrows As Integer = mydv.Count
Dim i As Integer
For i = 0 To Nrows - 1
If dgFiles.IsSelected(i) Then
Dim newRow As DataRow = DtResult.NewRow()
'For Each Appcell In


End If
Next

Return DtResult
End Function


Una volta trovata la riga selezionata ... per copiarla dal Datagrid alla nuova Table .... devo per forza ciclare nuovamente sulle celle o esiste un "copia Riga ??"
Thanks !
Ho dato un'occhiata veloce al tuo codice e non e' molto chiaro... (ad esempio, il parametro in ingresso, a cosa serve? ci sono variabili che non si capisce dove sono state dichiarate...)

Allora, innanzitutto ti do un link:

http://www.dotnetjohn.com/articles.aspx?articleid=83

Vedi se puo' fare al caso tuo.
E poi ti do la mia soluzione artigianale.

private DataTable GetSelectedItems()
    {
      // copio lo schema dell'oggetto DataTable
      // che e' fonte di dati del datagrid
      // (suppongo che il suo stato sia conservato...)
      DataTable dt = ((DataTable)HttpContext.Current.Session["data"]).Clone();

      // Itero attraverso le item del DataGrid
      for(int i = 0; i < this.DataGrid1.Items.Count; i++)
      {
        DataGridItem dgi = this.DataGrid1.Items[i];
        CheckBox c = (CheckBox)dgi.Cells[0].Controls[1];

        // Se la CheckBox e' spuntata...
        if(c.Checked)
        {
          // Aggiungo una riga alla DataTable
          DataRow dr = dt.NewRow();
          dr["CustomerID"] = ((DataBoundLiteralControl)dgi.Cells[1].Controls[0]).Text;
          dr["CompanyName"] = ((DataBoundLiteralControl)dgi.Cells[2].Controls[0]).Text;
          dt.Rows.Add(dr);
        }
      }

      // Restituisco un oggetto DataTable contenente le righe selezionate
      return dt;
    }


Ora, io sono convinto che tale modo di operare sia abbastanza "grezzo", ma Natty Gur sembra smentirmi:
http://www.dotnet247.com/247reference/msgs/35/175205.aspx

Vediamo come la pensano i nostri MVP!

Spero di esserti stato di aiuto.
Modificato da naighes il 25 ottobre 2005 11.46 -

Nicola Baldi
"Make things as simple as possible, but not simpler."
>>> My blog <<<

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.