我正在使用带有 sqldatasource 的 gridview。如何将代码隐藏中的数据源作为数据表取回?
问问题
10463 次
3 回答
4
使用 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]; 甚至可以从 DataSet 中提取 DataTable 您必须根据需要检查表或表名的索引。
快乐编码。
于 2010-01-06T12:27:57.260 回答
3
已编辑
使用SqlDataSource.Select方法并将其分配给数据视图
DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
然后使用提取数据表
DataTable dt = (DataTable)dv.ToTable();
于 2010-01-06T12:08:29.227 回答
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"];
于 2017-03-22T01:55:32.173 回答