如何将GridView.DataSource
导出到数据表或数据集?
答案 0 :(得分:48)
假设您的DataSource是DataTable类型,您可以这样做:
myGridView.DataSource as DataTable
答案 1 :(得分:28)
您应该在DataSource
中首先转换BindingSource
,看看示例
BindingSource bs = (BindingSource)dgrid.DataSource; // Se convierte el DataSource
DataTable tCxC = (DataTable) bs.DataSource;
使用tCxC
的数据,您可以执行任何操作。
答案 2 :(得分:18)
就个人而言,我会选择:
DataTable tbl = Gridview1.DataSource as DataTable;
这将允许您测试null,因为这会导致DataTable对象或null。使用(DataTable)Gridview1.DataSource将其作为DataTable投射将导致崩溃错误,以防DataSource实际上是DataSet甚至是某种集合。
答案 3 :(得分:8)
安布,
我遇到了和你一样的问题,这是我用来解决问题的代码。虽然,我没有为我的目的使用页脚行部分,但我确实将它包含在此代码中。
DataTable dt = new DataTable();
// add the columns to the datatable
if (GridView1.HeaderRow != null)
{
for (int i = 0; i < GridView1.HeaderRow.Cells.Count; i++)
{
dt.Columns.Add(GridView1.HeaderRow.Cells[i].Text);
}
}
// add each of the data rows to the table
foreach (GridViewRow row in GridView1.Rows)
{
DataRow dr;
dr = dt.NewRow();
for (int i = 0; i < row.Cells.Count; i++)
{
dr[i] = row.Cells[i].Text.Replace(" ","");
}
dt.Rows.Add(dr);
}
// add the footer row to the table
if (GridView1.FooterRow != null)
{
DataRow dr;
dr = dt.NewRow();
for (int i = 0; i < GridView1.FooterRow.Cells.Count; i++)
{
dr[i] = GridView1.FooterRow.Cells[i].Text.Replace(" ","");
}
dt.Rows.Add(dr);
}
答案 4 :(得分:1)
我使用了下面的代码行,它可以使用,试试这个
DataTable dt = dataSource.Tables[0];
答案 5 :(得分:1)
如果您通过以下方式进行gridview.bind()
:
if(!IsPostBack)
{
//your gridview bind code here...
}
然后,您可以在函数中使用DataTable dt = Gridview1.DataSource as DataTable;
来检索数据表。
但是当我单击按钮并记录到Microsoft文档时,我将数据表绑定到了Gridview:
HTTP是无状态协议。这意味着Web服务器对待每个 页面的HTTP请求作为独立请求。服务器保留 不了解先前使用的变量值 请求。
如果您具有相同的条件,那么我建议您使用Session
来保留值。
Session["oldData"]=Gridview1.DataSource;
之后,您可以在页面再次回发时重新调用该值。
DataTable dt=(DataTable)Session["oldData"];
参考: https://msdn.microsoft.com/en-us/library/ms178581(v=vs.110).aspx#Anchor_0
https://www.c-sharpcorner.com/UploadFile/225740/introduction-of-session-in-Asp-Net/
答案 6 :(得分:-1)
这是迟到的,但非常有帮助。我只是发布以供将来参考
DataTable dt = new DataTable();
Data.DataView dv = default(Data.DataView);
dv = (Data.DataView)ds.Select(DataSourceSelectArguments.Empty);
dt = dv.ToTable();