如何从DataGridView获取DataTable? [英] How can I get DataTable from DataGridView?

查看:465
本文介绍了如何从DataGridView获取DataTable?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可以使用内置方法从datagridview更新数据源或将更改从datagridview提交到datasource吗?否则如何从datagridview获取数据表?

我有数据集设置为datagridview的数据源。当我更改datagridview(删除/插入列/行)时,数据源未更改 - 是普通的(仍然具有与开始时相同的列/行)。我想根据datagridview更新数据源,因为我需要来自datagridview的最终数据表。数据表我得到了使用

((DataTable)dataGridView1.DataSource).DefaultView.ToTable()。复制()

但这个数据表=数据源但数据表< > datagridview

我想要

datatable = datagridview



我创建了自己的方法,从datagridview读取数据并写入datatable(每个单元格使用循环foreach)



谢谢

解决方案

您好,



您可以使用DataGridview的datasource属性获取数据表。

通过这种方式

 Datatable dtGridSource =(DataTable)datagridview.DataSource; 





希望这会有所帮助。


 

 public static DataTable ToDataTable< T>(IList< T>列表)
{
PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
for(int i = 0; i< props.Count; i ++)
{
PropertyDescriptor prop = props [i];
table.Columns.Add(prop.Name,Nullable.GetUnderlyingType(prop.PropertyType)?? prop.PropertyType);
}
object [] values = new object [props.Count];
foreach(列表中的T项)
{
for(int i = 0; i< values.Length; i ++)
values [i] = props [i]。 GetValue(item)?? DBNull.Value;
table.Rows.Add(values);
}
返回表;
}







将此代码放在代码后面(.cs)该代码无需更改任何内容



然后



必须添加1行绑定gridview在数据集下面添加这一行





 DataTable dt = ToDataTable(your_tablename.ToList()); 
GridviewId.DataSource = dt;

GridviewId.DataBind();







i希望它能帮到你......


It is possible use build-in method to update datasource from datagridview or commit changes from datagridview to datasource? Otherwise how can I get datatable from datagridview?
I have dataset to set as datasource for datagridview. When I change datagridview (delete/insert for columns/rows), datasource not changed - is ordinary (still have same columns/rows as on begin). I want update datasource according datagridview, because I need final datatable from datagridview. Datatable I get using
((DataTable)dataGridView1.DataSource).DefaultView.ToTable().Copy()
but this datatable = datasource but datatable <> datagridview
I want
datatable = datagridview

(I have created own method who read data from datagridview and write to datatable (using loop foreach for each cell))

thank you

解决方案

Hi,

You can get datatable by using the datasource property of DataGridview.
By this way

Datatable  dtGridSource  = (DataTable)datagridview.DataSource;



Hope this helps.


public static DataTable ToDataTable<T>(IList<T> list)
       {
           PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));
           DataTable table = new DataTable();
           for (int i = 0; i < props.Count; i++)
           {
               PropertyDescriptor prop = props[i];
               table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
           }
           object[] values = new object[props.Count];
           foreach (T item in list)
           {
               for (int i = 0; i < values.Length; i++)
                   values[i] = props[i].GetValue(item) ?? DBNull.Value;
               table.Rows.Add(values);
           }
           return table;
       }




put this code in code behind(.cs) file nothing to changes in this code

then

you have to add 1 line when you have to bind gridview add this line below dataset


 DataTable dt = ToDataTable(your_tablename.ToList());
GridviewId.DataSource = dt;
          
GridviewId.DataBind();




i hope it will help you......


这篇关于如何从DataGridView获取DataTable?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆