7

列ヘッダーのテキストを取得したい GridView があります。

for (int j = 0; j < grdToDisplay.HeaderRow.Cells.Count; j++)
{
    string s = grdToDisplay.HeaderRow.Cells[j].Text.ToString(); //Returns ""
    s = grdToDisplay.HeaderRow.Cells[j].Text; //Returns ""
    s = grdToDisplay.Rows[0].Cells[j].Text; //Returns text from first row of results not the header
   // s = grdToDisplay.Columns[j].HeaderText.ToString(); // does not work as column count is 0
}

GridView のコンテンツは、ユーザー クエリに基づいて実行時に生成されます。ヘッダーはクリックしてソートできます。

GridView をループして列ヘッダー テキストを一覧表示するにはどうすればよいですか?

4

6 に答える 6

5

使用できますGridViewColumn.HeaderText

for (int i = 0; i < grdToDisplay.Columns.Count; i++)
{
    string header = grdToDisplay.Columns[i].HeaderText;
}

編集

ただし、列数が0であるため、結果は得られません。

次にAutoGenerateColumns=true、宣言的に追加された列のみがカウントされます。したがって、データバインドしたGridViewにこのコードを使用してください:

for (int i = 0; i < grdToDisplay.HeaderRow.Cells.Count; i++)
{
    string header = grdToDisplay.HeaderRow.Cells[i].Text;
}
于 2013-01-10T15:05:12.463 に答える
3

GridView のヘッダーはソート可能であるため、Linkbutton からヘッダーのテキストを取得できます。これを試してください: 次のコードを gridView の DataBind に入れます。

for (int i = 0; i < gridView.HeaderRow.Cells.Count; i++)
            {

                if (gridView.HeaderRow.Cells[i].HasControls())
                {
                    //when gridview is sortable, type of header is LinkButton
                    // Linkbutton is in index 0 of the control
                    if (gridView.HeaderRow.Cells[i].Controls[0] is LinkButton)
                    {
                        LinkButton headerControl = gridView.HeaderRow.Cells[i].Controls[0] as LinkButton;
                       string headerName = headerControl.Text;

                    }

                }

            }
于 2014-06-12T08:15:31.017 に答える
0

私は最近、最近のコーディングを行っているときに、この非常に問題に遭遇しました。ヘッダーテキストを取得しようとすると、データバインドイベントでも常に空白が返されます。列独自の制御スキームに基づいてヘッダーを変換しようと考えたときにのみ、解決策にたどり着きました。

グリッドビューを並べ替え可能にすると、ヘッダー テキストが別のものに変換され、変換せずにヘッダーから情報を取得することができなくなります。この問題に対する私自身の解決策は、テキストを要求したときに単純にソートできないようにすることでしたが、それが不可能であると仮定すると、別のスレッドでソート可能であってもテキストを取得する解決策に出くわしました:

AllowSorting が有効な場合、ASP.NET GridView ヘッダー行のテキストが空になる

于 2015-07-21T16:46:51.607 に答える
0

ここに画像の説明を入力
テンプレート列がデータソースに基づいている場合、ヘッダーテキストはフィールド名を返します

  • GridView.Columns(i).HeaderText

ただし、最初に列のヘッダーテキストを取得する必要がある場合は、その行を使用します

  • GridView.HeaderRow.Cells(i).Text

このリンクは、Gridview セルのヘッダー テキストの取得に役立つ場合があります

于 2016-06-09T10:45:46.890 に答える
0

ここと他のスレッドで読んだことに基づいて、独自のソリューションを作成しました..ここに行きます:

public void HideColumnByName(GridView grid, string header)
        {
            if (grid.HeaderRow.HasControls()==true)
            {
                for (int i = 0; i < grid.HeaderRow.Cells.Count; i++)
                {
                    if (grid.HeaderRow.Cells[i].Text == header)
                    {
                        foreach (GridViewRow row in grid.Rows)
                        {
                            row.Cells[i].Visible = false;
                            grid.HeaderRow.Cells[i].Visible = false;
                        }
                    }

                }
            }
        }

そのメソッドは、ヘッダー名(または列名)がメソッドに渡される文字列パラメーター(「ヘッダー」パラメーター)である列のヘッダーとセルの両方をまっすぐに非表示にします。「HideColumnByName」メソッドは、グリッドビューの「DataBound」イベントから呼び出されます。単純。お役に立てれば !それは確かに私にとってはうまくいきました!:)

于 2014-07-23T01:29:57.540 に答える