0

エラーが発生しました:インデックスが範囲外でした。負ではなく、コレクションのサイズよりも小さい必要があります。\r\nパラメータ名: 私のコード gvGrid.Columns.RemoveAt(0) が以下で実行されるときのインデックス。ここで何が欠けていますか?

gvGrid.DataSource = eCustomerMgr.GetCustHistory(oCust);
gvGrid.DataBind();  
gvGrid.Columns.RemoveAt(0);  

コード ブロックは、データを Excel にエクスポートするために使用されています。

更新: @Lajos Arpad の提案を使用すると、次のようになります。

ここに画像の説明を入力

ただし、gvGrid.Columns.Count にカーソルを合わせると 0 になります

ここに画像の説明を入力

グリッド数が 0 と表示されるのはなぜですか?

4

7 に答える 7

3

Columns.Count が 0 を表示している理由はわかりませんが、別の方法に興味がある場合はgvGrid.HeaderRow.Cells[0].Visible = false;、削除しようとしている列が 0 である場所を試すことができます。お役に立てれば。

于 2012-08-03T00:53:53.603 に答える
1
gvGrid.DataSource = eCustomerMgr.GetCustHistory(oCust);
gvGrid.DataBind();  
if (gvGrid.Columns.Count > 0)
{
    gvGrid.Columns.RemoveAt(0);
}
于 2012-08-01T16:32:16.130 に答える
1

最初にバインドしてから、バインドする前にデータ ソースの列を削除または削除します

gvGrid.DataSource = eCustomerMgr.GetCustHistory(oCust);
gvGrid.DataBind();  
gvGrid.Columns.RemoveAt(0);

グリッドにバインドする前に列を削除します。データテーブルがあるとします

   DataTable t;
   t.Columns.Remove("columnName");
   t.Columns.RemoveAt(columnIndex);
于 2012-08-01T16:09:02.707 に答える
0

まず、eCustomerMgr.GetCustHistory(oCust);列を削除する前に、データが返されていることを確認し、グリッドをバインドします。

于 2012-08-01T16:12:02.480 に答える
0

データについて確信がある場合は、最初に DataBind、次に RemoveAt を実行します。

于 2012-08-01T16:09:40.320 に答える
0
 if (gvGrid.Rows.Count > 0) {

  gvGrid.HeaderRow.Cells[0].Visible = false;

  for (int i = 0; i < gvGrid.Rows.Count; i++) {
   gvGrid.Rows[i].Cells[0].Visible = false;

  }
 }
于 2018-06-06T07:02:50.697 に答える
0

最初に AutoGenerateColumns="False"、列名を実行して定義したことを確認してください。

列を動的に削除する場合は、列名を事前定義する必要があります。例として。

  <Columns>
            <asp:BoundField DataField="Name" />
            <asp:BoundField DataField="Address" />
        </Columns> 

列ゼロを削除すると、列が削除されます。

于 2012-08-03T17:50:15.783 に答える