- 題名: 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での対応方法はないのでしょうか。