2012-10-18 126 views
0

如何将当前Datagrid数据转换为DataTable?我已经筛选了datagrid,现在我只想将过滤的数据转换为数据表。 Datagrid.ItemSource或DatagridView在这里没有帮助。将Datagrid数据转换为DataTable

+0

什么是数据的出处吗?即什么是DataGrid绑定? – dash

+0

什么返回'datagrid1.ItemsSource.GetType()。Name;'? –

+0

你正在使用ASP.net或Winform应用程序? –

回答

2

您可以从DataGrid中把数据作为datatble:

 DataTable dt = new DataTable(); 
     DataColumn[] dcs = new DataColumn[]{}; 

     foreach (DataGridViewColumn c in dgv.Columns) 
     { 
      DataColumn dc = new DataColumn(); 
      dc.ColumnName = c.Name; 
      dc.DataType = c.ValueType; 
      dt.Columns.Add(dc); 

     } 

     foreach (DataGridViewRow r in dgv.Rows) 
     { 
      DataRow drow = dt.NewRow(); 

      foreach (DataGridViewCell cell in r.Cells) 
      { 
       drow[cell.OwningColumn.Name] = cell.Value; 
      } 

      dt.Rows.Add(drow); 
     } 
+0

我只有datagrid。我没有datagridview。 – Kishor

+0

我没有这里的dgv。想要将当前的数据网格项目转换为数据表格 – Kishor

1

坚持更新的数据会话,或它在XML写,只要你想获取数据。

一些这样的事

private void BindGrid() 
    { 
     DataTable dt; 
     if (Session["GridData"] == null) 
     { 
      dt = GetData();//From database or and other source 
      Session["GridData"] = dt; 
     } 
     else 
     { 
      dt = (DataTable)Session["GridData"]; 
     } 

     GridView.datasource = dt; 
     GridView.Databind(); 
    } 

    private void UpdataData(object sender, EventArgs e) 
    { 
     DataTable dt; 
     if (Session["GridData"] != null) 
     { 
      dt = (DataTable)Session["GridData"]; 


     // Do whatever you want with dt (datatable); 
     Session["GridData"] = dt; 

     BindGrid(); 
     } 

    }