C# 如何获取gridview的数据源

C# 如何获取gridview的数据源,c#,gridview,sqldatasource,C#,Gridview,Sqldatasource,我将gridview与sqldatasource一起使用。如何将codebehind中的数据源作为数据表返回 已编辑 使用方法并将其分配给dataview DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty); 然后使用 DataTable dt = (DataTable)dv.ToTable(); 使用System.Data.DataTable dt=(System.Data.Data

我将gridview与sqldatasource一起使用。如何将codebehind中的数据源作为数据表返回

已编辑

使用方法并将其分配给dataview

DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
然后使用

DataTable dt =  (DataTable)dv.ToTable();

使用System.Data.DataTable dt=(System.Data.DataTable)gview.DataSource;如果您正在绑定数据表

如果将数据集绑定为,甚至可以从数据集中提取数据表 System.Data.DataTable dt2=(System.Data.DataTable)((System.Data.DataSet)gvValidDA.DataSource)表[0];您必须根据自己的喜好检查表的索引或表名


快乐编码。

实际数据不存储在Gridview属性中,因为上述答案与此相关

仅对Gridview.DataSource使用直接强制转换是不够的,因为当Gridview呈现时,它实际上是空的

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

        DataSourceSelectArguments dss = new DataSourceSelectArguments();
        DataView dvS = sdsADDorREMstudentData.Select(dss) as DataView;
        DataTable dtS = dvS.ToTable() as DataTable;
        if (dtS != null)
        {
          ... etc...
        }
也可以在Gridview渲染之前使用ViewState保留数据

    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"];