- 題名: GridViewのRow動的追加+Fieldスタイル変更
- 日時: 2008/04/11 19:34:19
- ID: 21838
- この記事の返信元:
- (なし)
- この記事への返信:
- [21840] Re[1]: GridViewのRow動的追加+Fieldスタイル変更2008/04/12 0:57:31
- ツリーを表示
はじめまして、H.K.R.と申します。
私はASP.NETについてはほとんど無知なので、
もし変なことを書いていたら申し訳ないのですが、
以下のコードでとりあえずGridViewのHeader行のStyleをいろいろと設定することができましたので、
試してみてはいかがでしょうか?
※ 私が試した環境:WindowsXPHomeSP2、InternetExplorer7、ASP.NET開発サーバー、
VisualWebDeveloper2008ExpressEdition(対象Frameworkは、.NET Framework 2.0)
※ 言語がVBですがご了承下さい。m(_ _)m
Imports System.Data
Partial Class _Default
Inherits System.Web.UI.Page
' GridView1がデザイナで配置されていることを前提とする
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
testE()
MyBase.OnLoad(e)
End Sub
Private Sub testE()
If Me.IsPostBack = False Then
Me.GridView1.DataSource = Me.CreateDataSource2()
' ↓Falseでも試してみてください。
If True Then
Dim AddressOf_GridView1_RowDataBound As New GridViewRowEventHandler(AddressOf Me.GridView1_RowDataBound)
AddHandler Me.GridView1.RowDataBound, AddressOf_GridView1_RowDataBound
Me.GridView1.DataBind()
RemoveHandler Me.GridView1.RowDataBound, AddressOf_GridView1_RowDataBound
Else
Me.GridView1.DataBind()
Me.GridView1.HeaderStyle.BackColor = Color.Red
Me.GridView1.HeaderRow.Cells(0).BackColor = Color.Aqua
Me.GridView1.HeaderRow.Cells(0).Style.Add("width", "400px")
End If
Else
' とりあえず何もしない
End If
End Sub
Private Function CreateDataSource2() As ICollection
Dim dt As New DataTable
dt.Columns.Add(New DataColumn("Field1", GetType(String))) ' C#の場合はtypeof(String)
dt.Columns.Add(New DataColumn("Field2", GetType(String)))
dt.Columns.Add(New DataColumn("Field3", GetType(String)))
dt.Columns.Add(New DataColumn("Field4", GetType(String)))
For i As Integer = 1 To 7
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
Dim dv As New DataView(dt)
Return dv
End Function
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.Header Then
For i As Integer = 0 To e.Row.Cells.Count - 1
Dim tc As TableCell = e.Row.Cells(i)
tc.BackColor = Color.Blue
tc.Text += String.Format(" - 追加({0})", i + 1)
tc.Attributes.Add("onclick", String.Format("alert('{0} をクリックしました。');", tc.Text))
tc.Style.Add("width", "400px")
Next
End If
End Sub
End Class
以上です。
分類:[ASP.NET]
お世話になります。
GridViewのRow動的追加+Fieldスタイル変更
ASP.NET 2005で使用できるGridViewに
SQLのSelect結果をInsert&背景色・フォント位置などの設定
をする処理を作っています。
SQLのSelect結果のGridViewへの
Insertは、以下のような処理で出来ました
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn ("Field1", System.Type.GetType("System.String"));
dt.Columns.Add(new DataColumn ("Field2", System.Type.GetType("System.String"));
dt.Columns.Add(new DataColumn ("Field3", System.Type.GetType("System.String"));
dt.Columns.Add(new DataColumn ("Field4", System.Type.GetType("System.String"));
SqlDataReader sqldr = sqlcmd.ExecuteReader();
while(sqldr.Read()) {
dr = dt.NewRow();
dr["Field1"] = sqldr["Field1"];
dr["Field2"] = sqldr["Field2"];
dr["Field3"] = sqldr["Field3"];
dr["Field4"] = sqldr["Field4"];
dt.Rows.Add(dr);
}
GridView1.DataSource = dt;
※Select文など長い部分は一部略しています。
ここでdt.Columns.Addで追加した(Field1などの)
Columnsのスタイルを設定したいのですが、方法がわかりません。
おそらく、Field1などのItemStyleの設定が出来ればOKなのではないかという
気はあるのですが、DataColumnには
ItemStyleがなくスタイルの設定できません。
方法をご存知の方がおられましたら、ご教授いただけませんでしょうか?
よろしくお願いいたします。