Comment puis-je exporter GridView.DataSource
vers datatable ou dataset?
Vous devriez d'abord convertir DataSource
en BindingSource
, regardez exemple
BindingSource bs = (BindingSource)dgrid.DataSource; // Se convierte el DataSource
DataTable tCxC = (DataTable) bs.DataSource;
Avec les données de tCxC
, vous pouvez tout faire.
En supposant que votre source de données soit de type DataTable, vous pouvez simplement faire ceci:
myGridView.DataSource as DataTable
Personnellement j'irais avec:
DataTable tbl = Gridview1.DataSource as DataTable;
Cela vous permettrait de tester la valeur null car cela entraîne l'objet DataTable ou la valeur null. Le convertir en DataTable à l'aide de (DataTable) Gridview1.DataSource provoquerait une erreur qui planterait si DataSource était en fait un DataSet ou même une sorte de collection.
Documentation de support: Documentation MSDN sur "en tant que)
Ambu,
J'avais le même problème que vous et c'est le code que j'ai utilisé pour le résoudre. Bien que je n’utilise pas la section de la ligne de bas de page pour mes besoins, je l’ai incluse dans ce code.
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);
}
Si vous faites gridview.bind()
à:
if(!IsPostBack)
{
//your gridview bind code here...
}
Ensuite, vous pouvez utiliser DataTable dt = Gridview1.DataSource as DataTable;
en fonction de récupérer des données.
Mais je lie le datatable à gridview quand je clique sur le bouton, et l’enregistrement dans le document Microsoft:
HTTP est un protocole sans état. Cela signifie qu'un serveur Web traite chaque requête HTTP d'une page comme une requête indépendante. Le serveur ne conserve aucune connaissance des valeurs de variable utilisées lors des requêtes précédentes.
Si vous avez la même condition, je vous recommanderai alors d'utiliser Session
pour conserver la valeur.
Session["oldData"]=Gridview1.DataSource;
Ensuite, vous pouvez rappeler la valeur lors de la publication ultérieure de la page.
DataTable dt=(DataTable)Session["oldData"];
Références: 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/
J'ai utilisé la ligne de code ci-dessous et cela fonctionne, essayez ceci
DataTable dt = dataSource.Tables[0];