【发布时间】:2010-01-06 12:06:33
【问题描述】:
我正在使用带有 sqldatasource 的 gridview。如何将代码隐藏中的数据源作为数据表取回?
【问题讨论】:
标签: c# gridview sqldatasource
我正在使用带有 sqldatasource 的 gridview。如何将代码隐藏中的数据源作为数据表取回?
【问题讨论】:
标签: c# gridview sqldatasource
使用 System.Data.DataTable dt = (System.Data.DataTable)gview.DataSource;如果您要绑定 DataTable。
如果您将 DataSet 绑定为 System.Data.DataTable dt2 = (System.Data.DataTable)((System.Data.DataSet)gvValidDA.DataSource).Tables[0];您必须根据需要检查表的索引或表名。
编码愉快。
【讨论】:
已编辑
使用SqlDataSource.Select 方法并将其分配给数据视图
DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
然后使用提取数据表
DataTable dt = (DataTable)dv.ToTable();
【讨论】:
与上述答案相关,实际数据并未存储在 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"];
【讨论】: