如何获取gridview的数据源

时间:2010-01-06 12:06:34

标签: c# gridview sqldatasource

我正在使用sqldatasource的gridview。如何将代码隐藏中的数据源作为数据表返回?

3 个答案:

答案 0 :(得分:4)

使用System.Data.DataTable dt =(System.Data.DataTable)gview.DataSource;如果你绑定了一个DataTable。

如果要将DataSet绑定为,则甚至可以从DataSet中提取DataTable System.Data.DataTable dt2 =(System.Data.DataTable)((System.Data.DataSet)gvValidDA.DataSource)。Table [0];您必须根据需要检查表或表名的索引。

快乐的编码。

答案 1 :(得分:3)

<强> 被修改

使用SqlDataSource.Select方法并将其分配给数据视图

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

然后使用

提取数据表
DataTable dt =  (DataTable)dv.ToTable();

答案 2 :(得分:1)

实际数据未存储在Gridview属性中,如上所述。

使用直接强制转换为Gridview.DataSource是不够的,因为当gridview渲染时它实际上是NULL!

您必须直接从SQL数据源重新加载数据......

        DataSourceSelectArguments dss = new DataSourceSelectArguments();
        DataView dvS = sdsADDorREMstudentData.Select(dss) as DataView;
        DataTable dtS = dvS.ToTable() as DataTable;
        if (dtS != null)
        {
          ... etc...
        }

或者您可以使用ViewState在Gridview渲染之前保留数据。

    DataView dvClasses = (DataView)sdsClasses.Select(DataSourceSelectArguments.Empty);

    gvStudents.DataSourceID = "sdsClasses";
    gvStudents.DataSource = null; // Null out the source, as we have a SourceID instead
    gvStudents.DataBind();

    //save the data in a viewstate for later use (to control adding and removing students, without doing a postback! See ADD & REM methods below)
    DataView dv = (DataView)dvClasses;
    DataTable dt = new DataTable();
    if (dv != null)
    {
        dt = dv.ToTable();
        ViewState["gv"] = dt;
    }

当您需要在Gridview渲染后使用数据时,使用ViewState将其重新转换为DataTable ...

DataTable dt = (DataTable)ViewState["gv"];