2009-03-12 13 views
4

私はBoundColumnsを持つGridViewを持っています。最初の2列は非表示で、gridView1.Rows [0] .Cells [0] .TextとgridView1.Rows [0] .Cells [1] .Textをそれぞれ使用してアクセスしたいと思います。列がvisibleに変更されると、値にアクセスできます。 他のいくつかのフォーラムで提案されているように、列の幅をゼロに変更しようとしましたが、問題は決して解決されませんでした。私は何が間違っているかもしれないかについての指針を持っていますか?InvisibleにアクセスできないASPグリッドビューのバインドされた列

答えて

7

列がDataKeyNamesコレクションの一部である場合は、GridViewGuy siteに示すように、GridView.DataKeys[index].valueプロパティから値を取得する必要があります。

ただし、それらがDataKeyNamesコレクションに含まれていない場合は、次のハックを使用して値がViewStateに保持されるようにすることができます(ASP.NET 2+の非表示フィールドの通常の動作とは対照的)

GridView1.DataSource = myDataSource; 
// Set the column visibility to true before Databinding 

GridView1.Columns[0].Visible = true; 
GridView1.Columns[1].Visible = true; 
GridView1.DataBind() 

// Set the column visibility to false after Databinding 
GridView1.Columns[0].Visible = false; 
GridView1.Columns[1].Visible = false; 
1

これはASP.NETでの一般的な動作です(Visible = false)。コードビハインドでしかコントロールを使用できません。

このための最善のは、その列に次のスタイルを適用するには、次のようになります。

display:'none' 
+0

これは、行指向のhtmlで表としてレンダリングされているため、表示を設定できますか?私はあなたができないと言っていない、私はそれを試みたことがない! 列内の各tdセルに表示スタイルを表示しませんか? –

+0

あなたはそれを言いました、私は疑問に思っています...おそらくそれがうまくいくかどうかわからない、TDのスタイルをおそらく置くでしょう。ありがとう:) – leppie

1

を非表示にしたい列にcssクラスhiddencolを追加します。あなたのCSSにhiddencolクラスを追加してください。あなたは良いです。

コード内の列にはまだアクセスできますが、ページには表示されません。

<asp:BoundField DataField="Site_ID" ItemStyle-CssClass="hiddencol" /> 

.hiddencol 
{ 
    display: none; 
} 
関連する問題