65.9K
CodeProject is changing. Read more.
Home

GridView to a DataTable

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.25/5 (10 votes)

Aug 6, 2006

CPOL
viewsIcon

207718

Convert the current Gridview to a datatable

The Problem

SQL Data source retrieves data from the server and bind it to the Gridview, what if the data you need for some reason "that what I have faced when I needed to bid the chart to grid shown data" is the shown data in the Gridview, the data that the Gridview hold now, here is the method to do so:

Solution

  1. get the a data view from the SQL data source
  2.   DataView dataView;dataView = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
  3. check if the data view is not null
  4.  
    
    if (ChartDataView != null) {}
  5. Set the structure of the table from the SQL data source
  6. DataTable dt;
    dt = ChartDataView.Table.Clone();
  7. Copy the GridViewRows to an array
  8.     GridViewRow[] Chartarr = new ridViewRow[GridViewData.Rows.Count];
      GridViewData.Rows.CopyTo(Chartarr, 0)
  9. Add the values to the new data table:
  10. foreach (GridViewRow row in Chartarr)
                 {
                     DataRow datarw;
                     datarw = dt.NewRow();
                     for (int i = 0; i < row.Cells.Count; i++)
                     {
                         datarw[i] = row.Cells[i].Text;
                     }
     
                     dt.Rows.Add(datarw);
             }

The Complete Code

 
if (ChartDataView != null) 
{

DataView dataView;

dataView = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty); 

DataTable dt;
dt = ChartDataView.Table.Clone();
 
GridViewRow[] Chartarr = new ridViewRow[GridViewData.Rows.Count];
  GridViewData.Rows.CopyTo(Chartarr, 0)

foreach (GridViewRow row in Chartarr)
             {
                 DataRow datarw;
                 datarw = dt.NewRow();
                 for (int i = 0; i < row.Cells.Count; i++)
                 {
                     datarw[i] = row.Cells[i].Text;
                 }
 
                 dt.Rows.Add(datarw);
         }
}