- 題名: 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がなくスタイルの設定できません。
方法をご存知の方がおられましたら、ご教授いただけませんでしょうか?
よろしくお願いいたします。