- 題名: GridViewでの幅固定
- 日時: 2008/04/03 16:40:42
- ID: 21787
- この記事の返信元:
- (なし)
- この記事への返信:
- [21809] Re[1]: GridViewでの幅固定2008/04/06 23:47:25
- ツリーを表示
はじめまして、H.K.R.と申します。
# 引っ込んだ略 → H.K.R. にハンドルネームを変更いたします。
私はASP.NETについてはほとんど無知なので、
もし変なことを書いていたら申し訳ないのですが、
以下のコードでGridView内の各セルの幅の最大値を固定にすることができましたので、
試してみてはいかがでしょうか?
※ 私が試した環境:WindowsXPHomeSP2、InternetExplorer7、
VisualWebDeveloper2008ExpressEdition(対象Frameworkは、.NET Framework 2.0)
Imports System.Data
Partial Class _Default
Inherits System.Web.UI.Page
' GridView1がデザイナで配置されていることを前提とする
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
Dim dt As New DataTable
For i As Integer = 1 To 6
dt.Columns.Add(String.Format("列 - {0}", i))
Next
For i As Integer = 1 To 10
Dim dr As DataRow = dt.NewRow
For j As Integer = 1 To dt.Columns.Count
dr.Item(j - 1) = String.Format("{0}行目のデータ{1}", i, j)
Next
dt.Rows.Add(dr)
Next
Me.GridView1.DataSource = dt
Me.GridView1.DataBind()
Me.GridView1.EnableViewState = False
For j As Integer = 1 To Me.GridView1.Rows.Count - 1
For i As Integer = 0 To GridView1.Rows(0).Cells.Count - 1
GridView1.Rows(j).Cells(i).Style.Add("width", "40px")
Next
Next
' しかし、1行目はセルの結合を行っています。
GridView1.Rows(0).Cells(0).ColumnSpan = GridView1.Rows(0).Cells.Count
GridView1.Rows(0).Cells(0).HorizontalAlign = HorizontalAlign.Center
For i As Integer = 1 To GridView1.Rows(0).Cells.Count - 1
GridView1.Rows(0).Cells(i).Style.Add("display", "none")
Next
MyBase.OnLoad(e)
End Sub
End Class
以上です。
分類:[ASP.NET]
GridViewで各列を固定幅にしようと思って、VBソース内でスタイルシート追加メソッドを使い、
1行目に「width」プロパティを設定しています。
For i As Integer = 0 To GridView.Rows(0).Cells.Count() - 1
GridView.Rows(0).Cells(i).Style.Add("width", "50px")
Next
しかし、1行目はセルの結合を行っています。
GridView.Rows(0).Cells(0).ColumnSpan = GridView.Rows(0).Cells.Count()
For i As Integer = 1 To GridView.Rows(0).Cells.Count() - 1
GridView.Rows(0).Cells(i).Style.Add("display", "none")
Next
つまり、HTMLでは1行目で定義した「width」プロパティを反映しますが、
1行目が結合しているため、反映されません。
当然、「width」を2行目に設定しても反映されません。
HTMLを直接書き込むなら「<colgroup>」タグを利用すれば可能なのですが、
GridViewでの対応方法はないのでしょうか。