動的にgridviewの背景色を変えたいのですが…

このQ&Aのポイント
  • ASP.NET、VB.NET環境でDataGridViewの背景色を条件により動的に変更したいと思っています。Cssファイルから色を取得できるようにしたいです。
  • ascxファイルには<asp:GridView (略)CssClass="border-w">という記載があり、通常時はborder-wというスタイルになります。
  • バインドのイベント時に1行1行色を変えるしかないかなと思っていますが、スマートなやり方をご存知でしたら、ご教授ください。
回答を見る
  • ベストアンサー

動的にgridviewの背景色を変えたいのですが…。

ASP.NET、VB.NET環境です。 DataGridViewの背景色を、条件により動的に変更したいと思っています。 色自体はCssファイルに定義する予定なので、Cssファイルから色を取得 できるようにしたいです。 まだASPの理解が薄いのですが、ascxファイルを見ると、 <asp:GridView (略)CssClass="border-w">の記載があるので、 通常時はborder-wというスタイルになる?んですよね? バインドのイベント時に1行1行色を変えるしかないかなと思ってますが、 (この時もどうやってCssから色をとればいいやら…)スマートなやり方を ご存知でしたら、ご教授ください。

  • ginfix
  • お礼率34% (330/962)

質問者が選んだベストアンサー

  • ベストアンサー
  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

GridViewのRowDataBoundイベントでやるといいですよ。 そこで、GridViewRowのCssClassを設定してあげます。 http://www.oborodukiyo.info/ASPNET/ASPNET-ChangeRowBackcolorByValue.aspx

関連するQ&A

  • ASP.NET GridView につきまして

    ASP.NET GridView につきまして質問があります。 よろしくお願いいたします。 SQL Server にあるデータを使用して、GridView を作成しております。 あるBit型フィールドがあるのですが、NULLの場合は 無、1の場合には 有 と GridView内に表示させたいのですが、GridViewの項目はバインドされているフィールドしか表示させることができないのでしょうか? 非連結の項目を追加して どこかのプロパティに =IIf([CheckChoku]=True,"有","無") を記述すれば、表示できるような方法を探しています。 すみません ASP.Net は始めたばかりなので、VB や Access のような操作が応用できればなと思っております。もしくは SQL のデータソースを作成するときに上記を埋め込んでソースにしないと実現できないものでしょうか? ご教授いただければ 大変助かります。 よろしくお願いいたします。

  • GridviewとDataGridviewの違い

    visual web developer2010を使用して 社内用の簡単なwebアプリケーションを作成しています。 DataGridViewとGridViewの違いは やっとのことでなんとなく分かったのですが (GridViewはDataGridViewの進化版?) 自分のやりたいことをネットで検索してコードを探すと そのほとんどがDataGridViewを使用したものです。 Clipboard.SetDataObject(DataGridView1.GetClipboardContent()) たとえば上記のような感じです。 これをGridViewで使えるようにしたくて 自分なりにコードを書き換えたりしてみるのですが (DataGridView1をGridView1にしてみたり、 DataGridView1をMe.DataGridView1にしてみたりしています) すべてエラーになってしまいます。 だったらDataGridViewを設置したいと思うのですが ツールバー内にDataGridViewはあるものの 色が薄くなっていて(グレーアウトみたいな感じです)選択できない状態です。 GridViewで、DataGridViewのコードを参考にして 少し書き換えれば動くようなことはないのでしょうか? または DataGridViewが使える方法を教えてください! ご教授お願いいたします!

  • gridviewの中のCSSを変更したい

    画面にチェックボックスがあります。 チェックボックスを Trueにした時、gridviewのaタグを有効にし、Falseにした時、無効にしたいと思っています。 vb側のチェックボックスを変更した時に、どのように記述すればよいでしょうか? できなければ、Falseの時に、aタグのclassを空白にしてもいいかなと思っています。 どなたかご教授ください。 <div id="containerData" class="containerData" onscroll="containerHeader.scrollLeft=this.scrollLeft;" runat="server"> <asp:GridView ID="grdList" runat="server" AutoGenerateColumns="False" DataSourceID="sqldsList" CssClass="List" DataKeyNames="NO" SelectionMode="None" CellPadding="0" CellSpacing="0" GridLines="None" > <Columns> <asp:TemplateField HeaderText="番号"> <ItemTemplate> <a class="tooltip" title='<%# Eval("NO") %>'> <custom:textLabel ID="lblNo" CssClass="No detailRow" runat="server" Text='<%# Eval("NO") %>' /> </a> </ItemTemplate> <ItemStyle CssClass="rowStyle"></ItemStyle> </asp:TemplateField> <asp:TemplateField HeaderText="名前"> <ItemTemplate> <a class="tooltip" title='<%# Eval("NAME") %>'> <custom:textLabel ID="lblName" CssClass="Name detailRow" runat="server" Text='<%# Eval("NAME") %>' /> </a> </ItemTemplate> <ItemStyle CssClass="rowStyle"></ItemStyle> </asp:TemplateField> </Columns> </asp:GridView> </ContentTemplate> </div>

  • ASP.NET GridView Column表示

    書き方が変かも知れませんがご了承ください。 VS2005のVB.NETでまず、 With DataGridView .Columns("ab").HeaderText = "AB" .Columns("cd").HeaderText = "CD" .Columns("ef").HeaderText = "EF" End With のようにしてColumnsの表示を表していたのですが ASP.NETは GridView1.DataBind() の後同様にしてみたところ 表示されませんでした。 どのようにしたら好きに表示することが出来ますでしょうか?

  • GridViewからの値を全件LOOPして取得したい

    GridViewについて教えてください。 <環境>ASP.NET データソースにSQLDataSourceを指定し、GridViewに全件を自動バインドして表示しています。 画面上に設置したボタン押下のイベントハンドラで、そのGridViewの全行をループして各列の値を参照したいのですが、 以下のようなに記述しても(1)の部分でNOTHINGとなりエラーになります。 どのようにすればよいでしょうか? やりたいことは、GridView全行ループし、ITEMKINDの値が"1"の時、TemplateField内にあるtxtNVERCHARの値を取得することです。 ご教授お願いします。 --------------------------------- <Columns> <asp:BoundField DataField="ITEMKIND" HeaderText="ITEMKIND" Visible="False" /> </asp:BoundField> <asp:TemplateField HeaderText="ITEM"> <ItemTemplate> <asp:TextBox CssClass="txtstr" ID="txtNVERCHAR" runat="server" Text='<%# Bind("ITEM_NVERCHAR", "{0}") %>'></asp:TextBox> </ItemTemplate> </asp:TemplateField> </Columns> --------------------------------- Protected Sub 更新_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExec.Click For Each row As GridViewRow In grdList.Rows Dim strITEMKIND As TextBox = DirectCast(row.FindControl("ITEMKIND"), TextBox)  ←(1) IF strITEMKIND.Text = "1" THEN Dim strDDL As TextBox = DirectCast(row.FindControl("txtNVERCHAR"), TextBox) End IF Next End Sub

  • GridViewのボタンの高さ

    vb.net(vs2005) asp.net GridViewのボタン(buttonfield)の高さを変えられないでしょうか。 ×リンク(文字列に変更し、フォントサイズを小さくする。) ×テンプレート列 以外でお願いします。 つまらないところで、困っています。(表が大きいので…)

  • GridViewからテンプレートフィールドのEvalにおける、値の取得

    現在VisualStudio2005 ASP.NET VBで作成しております。 現在、GridViewを使用しておりまして、バウンドフィールド、ハイパーリンクフィールド、テンプレートフィールド、 をそれぞれ、配置しております。 <asp:ButtonField DataTextField="expression_no" HeaderText="No" SortExpression="expression_no" Text="ボタン" CommandName="Details" > <ItemStyle CssClass="GridBorder" /> </asp:ButtonField> <asp:BoundField DataField="item_name" HeaderText="商品名" SortExpression="item_name" > <ItemStyle CssClass="GridBorder" /> </asp:BoundField> <asp:TemplateField HeaderText="年額" SortExpression="moneyPerYear"> <ItemStyle HorizontalAlign="Right" CssClass="GridBorder" /> <ItemTemplate> <asp:Label ID="moneyPerYearGrid" runat="server" Text='<%# Eval("moneyPerYear", "{0:c0}") %>'></asp:Label> </ItemTemplate> <FooterTemplate> <asp:Label ID="lblSummary1" runat="server" ForeColor="Red"></asp:Label> </FooterTemplate> <FooterStyle HorizontalAlign="Right" /> </asp:TemplateField> ハイパーリンクフィールドがクリックされたタイミングで、そのクリックされた行の、データを取得したいと考えております。 Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) ' コマンド名が“Details”の場合にのみ処理 If e.CommandName = "Details" Then ' 主キー(isbn列)の値を取得 Dim isbn As String = GridView1.DataKeys(e.CommandArgument).Value.ToString Session("Gridrow") = GridView1.Rows(e.CommandArgument) Dim datarow As TableRow = Session("GridRow") Labaffiliation_name.Text = datarow.Cells(0).Text '証明No Labinsurance_item_name.Text = datarow.Cells(1).Text '商品名 LabPerYearContract.Text = datarow.Cells(2).Text '年金額 End If End Sub 下記のプログラムを実行すると、データが取得できるのはバウンドフィールドでGridViewにデータバインドしている Labinsurance_item_name.Text = datarow.Cells(1).Text '商品名 のみで、他のフィールドのデータが取得できません。 どなたかご教授いただけますと幸いです。

  • gridViewの行選択解除

    gridViewの行選択解除 windowsのvb.netでgridviewを使用しております。 ページを読み込んだ際にgridViewにデータを表示するのですが gridViewの先頭行が選択状態のまま表示されてしまいます。 未選択状態にすることは可能なのでしょうか? お分かりになる方がいらしゃいましたらよろしくお願い致します。

  • gridviewのスクロールバーを非表示にしたい

    以下のとおりgridviewを表示し、データが存在する時は右スクロールバーが使用できるようにしています。 データ件数が0件の時は"データなし"と表示するのですが、 この時、スクロールバーを非表示するにはどうすればよいのでしょうか? <div class ="conditionpart2"> <table class="condition"> <tr style="text-align:left;"> <td> <asp:UpdatePanel ID="UpdPlView" runat="server" UpdateMode="Conditional"> <ContentTemplate> <C1GridView:C1GridView ID="grdList" runat="server" AutoGenerateColumns="False" DataSourceID="sqldsList" VisualStylePath="~/Common/css/CmpOne" VisualStyle="Office2007Blue" UseEmbeddedVisualStyles ="False" AllowSorting="True" SelectionMode="None" EmptyDataText = "データなし" ClientOnColumnWidthChanged="c1GridView_widthChange" AllowColMoving="true" AllowColSizing="true" CellPadding="0" CellSpacing="0" DataKeyNames="CODE" Height="540px" Width="1203px" ScrollSettings-ScrollMode="ScrollBar" ScrollSettings-ScrollOrientation="Vertical" > <ScrollSettings ScrollMode="ScrollBar" /> <HeaderStyle HorizontalAlign="Center" CssClass="headerStyle" /> <EmptyDataTemplate> <asp:label CssClass="lblNoData" id="lblNoData" runat="server">データなし</asp:label> </EmptyDataTemplate> <EmptyDataRowStyle VerticalAlign="Middle" HorizontalAlign="Center" Height="500px" /> <RowStyle Height="24px" /> <Columns> <C1GridView:C1BoundField HeaderText="コード" DataField="CODE"> <ItemStyle Width="80px"></ItemStyle> </C1GridView:C1BoundField> <C1GridView:C1BoundField HeaderText="品名" DataField="NAME"> <ItemStyle Width="850px"></ItemStyle> </C1GridView:C1BoundField> </Columns> </C1GridView:C1GridView> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="ddlCode" EventName="SelectedIndexChanged" /> </Triggers> </asp:UpdatePanel> </td> </tr> </table> </div>

  • GridViewにて行全体を選択する方法

    はじめまして、ASP.NETの初心者です。 環境は、Windows XP、ASP.netでVBを利用しています。 質問は、 GridViewコントローラを使用して、「選択」ボタンを 表示させず、行全体を選択できるようにしたいのです。 以前、同じような質問がされているのを見つけて 参考URL↓を見たのですが、いまだに解決できません。 http://www.microsoft.com/japan/msdn/vs/WebApplication/vbtchTopQuestionsAboutASPNETDataGridServerControl.aspx#vbtchtopquestionsaboutaspnetdatagridservercontrolselectingrows この参考のサイトでは「DataGrid」を利用していますが、 「GridView」ではどのようにコーディングしたらよいのでしょうか? お手数ですが、ヒントをいただけないでしょうか? よろしくお願いいたします。

専門家に質問してみよう