閲覧総計:28427  (本日:1  昨日:3)

 GridViewで特定の行の背景色を赤色にし、目立つ様にしたい場合がある。
 その方法を確認したので、記録に残しておく。 09/12/03

【機能】
 「状態」のセル(Cells(2))が空白でない行は背景色を赤色にする。

【稼働画面】

BgColor01.JPG

【方法】

<script runat="server">
    Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
        'タイトル行以外の行で
        If e.Row.RowType = DataControlRowType.DataRow Then
            '「状態」が空白でない行は背景色を赤色にする
            If e.Row.Cells(2).Text <> "&nbsp;" Then
                e.Row.BackColor = Drawing.Color.Red
            End If
        End If
    End Sub
</script>

【ハマリポイント】
 「状態」のセルの「空白」の判断で、「セルには何の情報も入っていない。」と思って
いたら、実は「&nbsp;」の情報が入っていた。
※&nbsp;は「半角スペース」のこと。(non-breaking space)

Accessデータベース名:MyDB.mdb
テーブル名:名簿

フィールド名データ型フィールドサイズ
ID (主キー)オートナンバー型長整数型
名前テキスト型50
状態テキスト型50

※VWD2005、ASP.NET2.0ではAccess2007のDBファイル形式(*.accdb)は利用できない。
DBファイルは「Acces2002-2003形式(*.mdb)」で保存してASP.NETで利用する。

開発環境:VWD2005 + Access2003
サーバ:ASP.NET2.0 + Access2003

【BgColor01.aspx】

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
        'タイトル行以外の行で
        If e.Row.RowType = DataControlRowType.DataRow Then
            '「状態」が空白でない行は背景を赤にする
            If e.Row.Cells(2).Text <> "&nbsp;" Then
                e.Row.BackColor = Drawing.Color.Red
            End If
        End If
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>GridViewの行の背景色を変える</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        GridViewの行の背景色を変える 09/12/02<br />
        <br />
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID"
            DataSourceID="AccessDataSource1" EmptyDataText="表示するデータ レコードがありません。" OnRowDataBound="GridView1_RowDataBound">
            <Columns>
                <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" SortExpression="ID" />
                <asp:BoundField DataField="名前" HeaderText="名前" SortExpression="名前" />
                <asp:BoundField DataField="状態" HeaderText="状態" SortExpression="状態" />
            </Columns>
        </asp:GridView>
        <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="App_Data\MyDB.mdb"
            DeleteCommand="DELETE FROM `名簿` WHERE `ID` = ?" InsertCommand="INSERT INTO `名簿` (`ID`, `名前`, `状態`) VALUES (?, ?, ?)"
            SelectCommand="SELECT `ID`, `名前`, `状態` FROM `名簿`" UpdateCommand="UPDATE `名簿` SET `名前` = ?, `状態` = ? WHERE `ID` = ?">
            <DeleteParameters>
                <asp:Parameter Name="ID" Type="Int32" />
            </DeleteParameters>
            <InsertParameters>
                <asp:Parameter Name="ID" Type="Int32" />
                <asp:Parameter Name="名前" Type="String" />
                <asp:Parameter Name="状態" Type="String" />
            </InsertParameters>
            <UpdateParameters>
                <asp:Parameter Name="名前" Type="String" />
                <asp:Parameter Name="状態" Type="String" />
                <asp:Parameter Name="ID" Type="Int32" />
            </UpdateParameters>
        </asp:AccessDataSource>
        <br />
    
    </div>
    </form>
</body>
</html>

【参考にしたページ】
  該当なし


選択肢 投票
参考になった 40  
ふつう 5  
参考にならなかった 9  

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS