VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1175|回复: 8

有人知道这问题吗,如何把GridView中的数据源,转换为DataTable

[复制链接]

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-7 12:00:01 | 显示全部楼层 |阅读模式
如何把GridView中的数据源,转换为DataTable.

GridView的数据源有这两种得到方式,一种是通过DataSource得到,
一种是通过DataSourceID得到,如
方式1
    this.GridView1.DataSource=this.ObjectDataSource1;
    this.GridView1.DataBind();
方式2
   this.GridView1.DataSourceID="ObjectDataSource1";
   this.GridView1.DataBind();

注:GridView中的数据源有可能有许多类型,有可能是DataSet、DataTable,
DataView,DataReader,SqlDataSource,ObjectDataSource。

如果是数据源是DataTable之类的,那挺好办, 用
this.GridView1.DataSource as DataTable就ok.,
但如果是ObjectDataSource 之类的数据源控件,这招就不行了,有人知道如何完成上面的需求吗?
回复

使用道具 举报

0

主题

64

帖子

45.00

积分

新手上路

Rank: 1

积分
45.00
发表于 2020-5-25 11:15:01 | 显示全部楼层
最笨的方法就是遍历GV,把每行的每列的数据取出,放到一个DataTable中
回复

使用道具 举报

0

主题

8

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-5-25 15:00:01 | 显示全部楼层
不太懂什么意思,感觉只使用前面那种就足够了阿,后面的没有遇见过
回复

使用道具 举报

1

主题

31

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-5-26 20:15:01 | 显示全部楼层
正如楼主所说,GridView的数据源确实有不可能转成DataTable的时候,
可能的做法大概就是如下的吧:

object data = GridView.DataSource;
DataTable dataTable = null;
if (data is DataSet)
{
        DataSet ds = data as DataSet;
        if (ds != null && ds.Tables.Count == 1)
        {
                dataTable = ds.Tables[0];
        }
}
else if (data is DataView)
{
        DataView dv = data as DataView;
        dataTable = dv.Table;
}
else if (data is DataTable)
{
        dataTable = data as DataTable;
}
其它的类型我是不知道怎么转成DataTable类型的.
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-5-27 13:00:02 | 显示全部楼层
前面的朋友说遍历GridView,那当然不行,我需要的是取出GridView中的数据源,而你遍历
GridView,只取了当前页面的数据源。。

平民百姓的想法就是我的想法,但如果数据源是ObjectDataSource之类的控件,就招就不行了,,有没有高手知道这问题应该如何解决???
回复

使用道具 举报

0

主题

322

帖子

115.00

积分

新手上路

Rank: 1

积分
115.00
发表于 2020-5-27 23:30:01 | 显示全部楼层
这也是个笨办法,

重查一次数据库

   DataTable dt = ((DataView)((ObjectDataSource)this.GridView1.DataSource).Select()).Table;
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-5-29 01:15:01 | 显示全部楼层
呵呵,老兄,重复一次数据库查询是可以得到结果,我也有想过,但是效率就不太好了,,多连接了数据库,耗费大量资源.,,各位有什么好方法吗?继续讨论!
回复

使用道具 举报

0

主题

22

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
发表于 2020-5-30 18:00:02 | 显示全部楼层
看看这些类型有没有一个拷贝方法。像什么.Copy之类的
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-28 06:45:02 | 显示全部楼层
我也遇到这个问题了.GV绑定的是ObejctDataSource 但是下面的业务需要转成DataTable来解决..
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表