我正在使用sqldatasource的gridview。如何将代码隐藏中的数据源作为数据表返回?
答案 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"];