2009-04-24 17 views

Respuesta

23

Usted debe convertir primero en DataSourceBindingSource, mira ejemplo

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

Con los datos de tCxC que puede hacer cualquier cosa.

37

Asumiendo que su fuente de datos es de tipo DataTable, puede simplemente hacer esto:

myGridView.DataSource as DataTable 
+0

Gracias, está bien ... – Penguen

+20

¿Qué tal si ** acepta ** la respuesta ?! – Michael

+0

esta es la mejor respuesta para esta pregunta, gracias – MBH

15

Personalmente me gustaría ir con:

DataTable tbl = Gridview1.DataSource as DataTable; 

Esto permitirá poner a prueba para nula ya que esto da lugar a ya sea objeto DataTable o nulo. Lanzarlo como un DataTable utilizando (DataTable) Gridview1.DataSource causaría un error de bloqueo en caso de que el DataSource sea realmente un DataSet o incluso algún tipo de colección.

Documentación de apoyo: MSDN Documentation on "as"

+0

Aunque esto no generó ningún error, cuando controlo el valor de mi tabla de datos, lo muestra como nulo aunque mi gridview muestra datos poblados. DataTable dt = gvJobSearchEngine.DataSource como DataTable; –

6

Ambu,

que estaba teniendo el mismo problema que usted, y este es el código que he utilizado para averiguarlo. Aunque, no uso la sección de la fila de pie de página para mis propósitos, sí la incluí en este código.

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

Esto llegó tarde pero fue bastante útil. Sólo estoy publicando para referencia futura

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

Data.DataView no tenía ninguna ventana emergente intellisense cuando probé su código. –

0

he utilizado debajo de la línea de código y funciona, prueba este

DataTable dt = dataSource.Tables[0]; 
Cuestiones relacionadas