2010-01-06 67 views

回答

3

被修改

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

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

然后,使用

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

我已经试过这个选项。但它返回null – Geeth 2010-01-06 12:09:32

+0

它返回null – Geeth 2010-01-06 12:13:45

+0

Ravia的解决方案低于工程 – RustyH 2014-01-09 14:42:49

4

使用System.Data.DataTable DT =提取数据表( System.Data.DataTable)gview.DataSource;如果你正在绑定一个DataTable。

如果您将DataSet绑定为,您甚至可以从DataSet中提取DataTable。 ]。您将需要根据自己的喜好检查表格或表格名称的索引。

快乐编码。

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

,并使用ViewState中把它放回一个DataTable,当你需要使用数据后在GridView已使...

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