0

RowDataBound イベントで gridview 列を非表示にしようとしています。現時点では、私はやっています:

e.Row.Cells[4].Visible = false;

このアプローチの問題は、グリッドビューで列の順序を変更するたびに、ここでインデックスも変更する必要があることです。

また、別のアプローチがあります:

foreach (TableCell col in e.Row.Cells)
        {
            if (col.Text == "Name")
            {
                col.Visible = false;
            }
        }

LINQを使えば可能だと誰かに言われました。

何かのようなもの:

((TableCell)e.Row.Cells.Cast<TableCell>()
             .Where(c => c.Text == "name")).Visible = false;

これまでのところ、私はそうすることができません。誰かが私がここで間違っていることを教えてもらえますか?

4

2 に答える 2

3

どうですか

e.Row.Cells.Cast<TableCell>()
           .Where(c => c.Text == "name")
           .ToList()
           .ForEach(col => col.Visible = false);
于 2012-09-30T05:44:42.140 に答える
1

他の誰かがこれを見つけた場合に備えて。Nikhilの回答を変更して、列全体(ヘッダーを含む)を非表示にしました。

e.Row.Cells.Cast<DataControlFieldCell>()
    .Where(c => c.ContainingField.HeaderText == "Name" 
             || c.ContainingField.HeaderText == "Title")
    .ToList()
    .ForEach(c => c.ContainingField.Visible = false);
于 2015-02-09T04:43:37.970 に答える