2009-04-24 13 views

risposta

23

è necessario convertire prima DataSource in BindingSource, guarda ad esempio

BindingSource bs = (BindingSource)dgrid.DataSource; // Se convierte el DataSource 
DataTable tCxC = (DataTable) bs.DataSource; 

Con i dati di tCxC si può fare nulla.

37

Assumendo che il DataSource è di tipo DataTable, si può solo fare questo:

myGridView.DataSource as DataTable 
+0

Grazie ok .. – Penguen

+20

Allora che ne dici di ** accettare ** la risposta ?! – Michael

+0

questa è la migliore risposta per questa domanda, grazie – MBH

15

Personalmente vorrei andare con:

DataTable tbl = Gridview1.DataSource as DataTable; 

Ciò consentirebbe di testare per null come questo si traduce in o oggetto DataTable o null. Lanciarlo come DataTable usando (DataTable) Gridview1.DataSource causerebbe un errore irreversibile nel caso in cui DataSource fosse in realtà un DataSet o addirittura una sorta di raccolta.

Documentazione di supporto: MSDN Documentation on "as"

+0

Anche se questo non ha generato alcun errore, quando passo con il mouse per controllare il valore del mio datatable lo mostra come nullo anche se il mio gridview mostra i dati popolati. DataTable dt = gvJobSearchEngine.DataSource as DataTable; –

6

Ambu,

ho avuto lo stesso problema, come voi, e questo è il codice che ho usato per capirlo. Sebbene io non utilizzi la sezione della riga del footer per i miei scopi, l'ho inclusa in questo codice.

DataTable dt = new DataTable(); 

    // add the columns to the datatable    
    if (GridView1.HeaderRow != null) 
    { 

     for (int i = 0; i < GridView1.HeaderRow.Cells.Count; i++) 
     { 
      dt.Columns.Add(GridView1.HeaderRow.Cells[i].Text); 
     } 
    } 

    // add each of the data rows to the table 
    foreach (GridViewRow row in GridView1.Rows) 
    { 
     DataRow dr; 
     dr = dt.NewRow(); 

     for (int i = 0; i < row.Cells.Count; i++) 
     { 
      dr[i] = row.Cells[i].Text.Replace("&nbsp;",""); 
     } 
     dt.Rows.Add(dr); 
    } 

    // add the footer row to the table 
    if (GridView1.FooterRow != null) 
    { 
     DataRow dr; 
     dr = dt.NewRow(); 

     for (int i = 0; i < GridView1.FooterRow.Cells.Count; i++) 
     { 
      dr[i] = GridView1.FooterRow.Cells[i].Text.Replace("&nbsp;",""); 
     } 
     dt.Rows.Add(dr); 
    } 
-1

Arriva tardi ma è stato molto utile. Sono solo distacco per riferimento futuro

DataTable dt = new DataTable(); 
Data.DataView dv = default(Data.DataView); 
dv = (Data.DataView)ds.Select(DataSourceSelectArguments.Empty); 
dt = dv.ToTable(); 
+0

Data.DataView non ha avuto alcun popup intellisense quando ho provato il tuo codice. –

0

ho usato sotto la linea di codice e funziona, provate questo

DataTable dt = dataSource.Tables[0]; 
Problemi correlati