Je fais une page Web dans asp.net et dans un module ont sélectionné une archive Excel avec FileUpLoad
et cliquez sur un bouton d'importation. Jusque là je vais bien. Mais dans le moment que je veux, sélectionnez une autre archive Excel et cliquez sur le bouton Importer, n'effacez pas la variable GridView
et n'indiquez pas d'erreur. Je tente avec ceci parce que je vois dans d'autres questions semblables à ceci.
Avec cela je charge la grille
Conn = string.Format(Conn, DireccionArchivo, MostrarHDR);
OleDbConnection ConnExcel = new OleDbConnection(Conn);
OleDbCommand CmdExcel = new OleDbCommand();
OleDbDataAdapter Oda = new OleDbDataAdapter();
DataTable Dt = new DataTable();
CmdExcel.Connection = ConnExcel;
ConnExcel.Open();
CmdExcel.CommandText = "SELECT * From ["Page1$"]";
Oda.SelectCommand = CmdExcel;
Oda.Fill(Dt);
ConnExcel.Close();
grdResultados.Caption = Path.GetFileName(DireccionArchivo);
grdResultados.DataSource = Dt;
grdResultados.DataBind();
Et avec cela, je veux effacer la GridView
et le dernier y appelé de nouveau la méthode de chargement de la GridView
DataTable ds = new DataTable();
ds = null;
grdResultados.DataSource = ds;
grdResultados.DataBind();
L'erreur que me montre est dans la grdResultados.DataBind();
lorsqu'elle est appelée pour la deuxième fois.
J'ai résolu le problème, au moment où effacer le GridView avec
DataTable ds = new DataTable();
ds = null;
grdResultados.DataSource = ds;
grdResultados.DataBind();
cela efface le GridView mais ne supprime pas les noms des colonnes, et c’est l’erreur, il faut également nettoyer les noms des colonnes. Pour supprimer les colonnes:
for (int i = 0; grdResultados.Columns.Count > i; )
{
grdResultados.Columns.RemoveAt(i);
}
et dans la méthode de chargement, GridView doit générer les colonnes automatiquement avec cette propriété:
grdResultados.AutoGenerateColumns = true;
Je laisse cela au cas où quelqu'un aurait le même problème
Il suffit d'utiliser la valeur null:
grdResultados.DataSource = null;
grdResultados.DataBind();
essaye ça
grdResultados.DataSource = null;
ou
grdResultados.Rows.Clear();
puis relier le gridview
int gvHasRows = grdResultados.Rows.Count;
if (gvHasRows > 0)
{
grdResultados.Columns.Clear();
grdResultados.DataBind();
}
Commencez par vérifier que Gridview contient des données avant d'essayer d'effacer . Les lignes n'ont pas de fonction Effacer.
Si vous utilisez une session, effacez la session Exemple:
DataTable ds = new DataTable();
ds = null;
GV.DataSource = ds;
GV.DataBind();
for (int i = 0; GV.Columns.Count > i; )
{
GV.Columns.RemoveAt(i);
}
ViewState["CurrentData"] = null;
Créez une table de données vide avec uniquement vos noms de colonne et reliez-la
Vous pouvez simplement faire ceci:
GridView1.SelectedIndex = -1;