|
分類:[.NET 全般]
開発環境 OS: WindowsXP SP3 言語: VisualStudio2010 VB Microsoft Visual Studio 2010 Version 10.0.30319.1 RTMRel Microsoft .NET Framework Version 4.0.30319 RTMRel
GridviewでWidthの指定をしているのですが、 反映されない列があります。 下記コードでデータベースのフィールドの長さに応じて GridviewのWidthを変更するようにしています。 しかし、3列ほど変更されません(その3列はデータベースに1文字または空白です) ですのでコードである列は強制的に Widthを指定してます Case 6 GridView2.Columns(catLoop + 1).ItemStyle.Width = 100 GridView2.Columns(catLoop + 1).ItemStyle.Wrap = False 上記分で6列目にはWidt=100をいれて、 強制的に指定しているのですが、 反映されてないようです。(デバッグでこのコードを実行されているとこまでは確認できました)
そこで切り分けとして、 他の行をWidth=50ぐらいにして、 反映されない3列に100をいれたらきちんと反映されるのは確認できました。 そこでGridview自体のWidthの長さというのはトータルできまっているのでしょうか? 列自体が11列ぐらいあり、長くなっています。
アドバイスの程よろしくお願いします。
Private Sub GridView2_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView2.RowDataBound
Dim catName(0 To 9) As String Dim catNameLen(0 To 9) As String Dim widestData(0 To 9) As Integer
Dim catLoop As Integer
Dim drv As System.Data.DataRowView drv = CType(e.Row.DataItem, System.Data.DataRowView)
If e.Row.RowType = DataControlRowType.DataRow Then If drv IsNot Nothing Then 'Dim catName As String = drv(1).ToString() For catLoop = 0 To 9 catName(catLoop) = drv(catLoop).ToString() catNameLen(catLoop) = catName(catLoop).Length Select Case catLoop Case 6 GridView2.Columns(catLoop + 1).ItemStyle.Width = 100 GridView2.Columns(catLoop + 1).ItemStyle.Wrap = False Case Else If catNameLen(catLoop) > widestData(catLoop) Then widestData(catLoop) = catNameLen(catLoop) GridView2.Columns(catLoop + 1).ItemStyle.Width = _ widestData(catLoop) * 50 GridView2.Columns(catLoop + 1).ItemStyle.Wrap = False End If End Select Next End If End If
End Sub
|