web-dev-qa-db-ja.com

asp.netのGridViewはどの程度クリアですか?

Asp.netおよびモジュールでWebページを実行しているときに、FileUpLoadを使用してExcelアーカイブを選択し、ボタンインポートをクリックします。これまでは大丈夫です。ただし、他のExcelアーカイブを選択してインポートボタンをクリックするよりも、GridViewをクリアしてエラーを表示しないでください。私はこれに似た他の質問を見ているので、これを試みます。

これでグリッドをロードします

_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();
_

そしてこれで、GridViewをクリアし、最後に呼び出されたyがGridViewをロードする新しいメソッドを呼び出します

_DataTable ds = new DataTable();
ds = null;
grdResultados.DataSource = ds;
grdResultados.DataBind();
_

2回目に呼び出されたときに表示されるエラーはgrdResultados.DataBind();にあります。

7
Fernando Zaiza

GridViewをクリアするよりもすぐに問題を解決しました

DataTable ds = new DataTable();
ds = null;
grdResultados.DataSource = ds;
grdResultados.DataBind();

これはGridViewをクリアしますが、列の名前をクリアしないでください。これはエラーであり、列の名前も消去する必要があります。列を削除するには:

for (int i = 0; grdResultados.Columns.Count > i; )
{
    grdResultados.Columns.RemoveAt(i);
}

ロードのメソッドでは、GridViewはこのプロパティを使用して列を自動的に生成する必要があります。

grdResultados.AutoGenerateColumns = true;

他の人が同じ問題を抱えている場合に備えて、これを残します

9
Fernando Zaiza

Null値を使用するだけです:

grdResultados.DataSource = null;
grdResultados.DataBind();
29
Ali

これを試して

grdResultados.DataSource = null;

または

grdResultados.Rows.Clear();

次に、gridviewを再バインドします

2
faby
int gvHasRows = grdResultados.Rows.Count;
if (gvHasRows > 0)
{
    grdResultados.Columns.Clear();
    grdResultados.DataBind();
}

クリアする前に、Gridviewにデータがあることを最初に確認します。行にはクリア機能はありません。

2
LokizFenrir

セッションを使用する場合は、セッションをクリアします例:

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;
1
Carlos Acosta

列名だけで空のデータテーブルを作成し、再バインドします

0
Rex

これを簡単に行うことができます:

GridView1.SelectedIndex = -1;
0
Ashandra Singh