エクスポートする方法GridView.DataSource
データテーブルまたはデータセットへ?
最初にDataSource
のBindingSource
を変換する必要があります。例を見てください
BindingSource bs = (BindingSource)dgrid.DataSource; // Se convierte el DataSource
DataTable tCxC = (DataTable) bs.DataSource;
tCxC
のデータを使用すると、何でもできます。
DataSourceのタイプがDataTableであると仮定すると、これを行うことができます。
myGridView.DataSource as DataTable
個人的に私は行くだろう:
DataTable tbl = Gridview1.DataSource as DataTable;
これにより、DataTableオブジェクトまたはnullのいずれかになるため、nullをテストできます。 (DataTable)Gridview1.DataSourceを使用してDataTableとしてキャストすると、DataSourceが実際にDataSetまたは何らかのコレクションである場合、クラッシュエラーが発生します。
サポートドキュメント: "as"に関するMSDNドキュメント
アンブ、
私はあなたと同じ問題を抱えていました、そして、これは私がそれを理解するのに使用したコードです。フッター行セクションは目的に使用していませんが、このコードに含めました。
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);
}
以下で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_
https://www.c-sharpcorner.com/UploadFile/225740/introduction-of-session-in-Asp-Net/
私は以下のコード行を使用しましたが、動作します、これを試してください
DataTable dt = dataSource.Tables[0];