如何将GridView.DataSource导出到数据表或数据集?

时间:2009-04-24 13:16:06

标签: c# asp.net gridview

如何将GridView.DataSource导出到数据表或数据集?

7 个答案:

答案 0 :(得分:48)

假设您的DataSource是DataTable类型,您可以这样做:

myGridView.DataSource as DataTable

答案 1 :(得分:28)

您应该在DataSource中首先转换BindingSource,看看示例

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

使用tCxC的数据,您可以执行任何操作。

答案 2 :(得分:18)

就个人而言,我会选择:

DataTable tbl = Gridview1.DataSource as DataTable;

这将允许您测试null,因为这会导致DataTable对象或null。使用(DataTable)Gridview1.DataSource将其作为DataTable投射将导致崩溃错误,以防DataSource实际上是DataSet甚至是某种集合。

支持文档:MSDN Documentation on "as"

答案 3 :(得分:8)

安布,

我遇到了和你一样的问题,这是我用来解决问题的代码。虽然,我没有为我的目的使用页脚行部分,但我确实将它包含在此代码中。

    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);
    }

答案 4 :(得分:1)

我使用了下面的代码行,它可以使用,试试这个

DataTable dt =  dataSource.Tables[0];

答案 5 :(得分:1)

如果您通过以下方式进行gridview.bind()

if(!IsPostBack)

{

//your gridview bind code here...

}

然后,您可以在函数中使用DataTable dt = Gridview1.DataSource as DataTable;来检索数据表。

但是当我单击按钮并记录到Microsoft文档时,我将数据表绑定到了Gridview:

  

HTTP是无状态协议。这意味着Web服务器对待每个   页面的HTTP请求作为独立请求。服务器保留   不了解先前使用的变量值   请求。

如果您具有相同的条件,那么我建议您使用Session来保留值。

Session["oldData"]=Gridview1.DataSource;

之后,您可以在页面再次回发时重新调用该值。

DataTable dt=(DataTable)Session["oldData"];

参考: https://msdn.microsoft.com/en-us/library/ms178581(v=vs.110).aspx#Anchor_0

https://www.c-sharpcorner.com/UploadFile/225740/introduction-of-session-in-Asp-Net/

答案 6 :(得分:-1)

这是迟到的,但非常有帮助。我只是发布以供将来参考

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