2016-08-19 23 views
0

私はdataTableを持っていて、テーブルの1つの列にブール値を表示しています。このブール値に応じてtdの背景色を変更したい。真であれば緑、偽であれば赤です。ここに私のhtmlがあります。tdの背景色をdataTableの灰色の行のみで変更することはできません

<table id="myTable" class="table table-striped m-b-none" data-ride="datatables"> 
         <thead> 
          <tr> 
           <th>Food</th> 
           <th>Edible</th> 
          </tr> 
         </thead> 
         <tbody> 
          @foreach (var item in Model) 
          {<tr>           
            <td>@item.FoodName</td> 
            <td class="@String.Format("alert {0}", ((item.IsEdible) ? "alert-success" : "alert-danger"))">@(item.IsEdible? "Edible" : "Not Edible")</td>           
           </tr>} 
         </tbody> 
        </table> 

only white rows are affected

そして、ここでJSです:

$('#myTable').dataTable({    

      "bProcessing": true, 
      "sDom": "<'row'<'col-sm-6'l><'col-sm-6'f>r>t<'row'<'col-sm-6'i><'col-sm-6'p>>",    
      "iDisplayLength": 10, 
      "sPaginationType": "full_numbers", 

      } 

表のストライプCSS:

.table-striped > tbody > tr:nth-child(odd) > td, 
.table-striped > tbody > tr:nth-child(odd) > th { 
    background-color: #f9f9f9; 
} 

はグレー行の内側にあるTDのクラスを変更することはできませんデータ表。私はdataTableのBaseStyleでダイビングする必要があると思いますが、それをどのように行うのか把握できませんでした。どんな助け? table-stripedクラスに適用なっているものは何でもCSSルール

alert-successalert-dangerクラスに優先を取っている:

あなたはあなたの質問であなたのCSSルールを含めていないので
+0

私たちに、単純なCSSの変更かもしれないプレーンhtmlのTDの例を挙げてください。どのように緑に変わりますか? –

+0

あなたの質問に関連するCSSルールを追加してください – jmoerdyk

+0

あなたのコードの画像でリンクを提供するのではなく(あまり遠くない将来にはうまくいかないでしょう)、[fiddle](https://jsfiddle.net /)またはあなたのコードのスニペット – Chax

答えて

0

が、これは推測です。

CSSルールの順番(ファイルの下のルールは以前のルールよりも優先されます)、またはtable-stripedクラスを使用するルールは、より多くのspecificルールになります。

.table-striped > tbody > tr:nth-child(odd) > td.alert-success, 
.table-striped > tbody > tr:nth-child(odd) > th.alert-success { 
     background-color: green; 
} 

.table-striped > tbody > tr:nth-child(odd) > td.alert-danger, 
.table-striped > tbody > tr:nth-child(odd) > th.alert-danger{ 
     background-color: red; 
} 

background-colorが適切なalertのクラスからは何でもして​​とredの交換:あなたは自分の質問に追加されたルールを考える

、あなたはストライプの行をカバーするために、以下のルールを追加することができます。

+0

質問する前に、私はテーブルストライプがクラスの選択を覆しているのを見ることができませんでした。どうもありがとうございました。私は上記のCSSを追加し、それは動作します。 – SEER

0

あなたのCSSリストの最後にカスタムCSSファイルを読み込みます。そのファイルにalert-successまたはalert-dangerのカスタムCSSを追加します。これはクラスルールtable-strippedよりも優先されます。あなたはこれを呼び出し、データにデータの変更に応じて基礎を更新できるようにこれを行うには

+0

あなたはそうです。お返事をありがとうございます。 – SEER

0

は、駆動JS:

$("#myTable td").each(function(){ 
if($(this).text()==true){ 

     $(this).css('background-color','#090'); 
    }else{ 
    $(this).css('background-color','#900'); 
} 
}) 
+0

私はCSSの適用を終了しましたが、あなたの返信に感謝します。これは素晴らしい代替ソリューションです。 – SEER

+0

答えは、テーブルセルのデータに何のロジックもなく、奇数行と偶数行をすぐに設定しました...あなたはセルの値に基づいて背景を変更したいと言っていました – abhinsit

+0

実際に新しいCSSを適用する方が論理的です。なぜなら、どのテーブルでもブール値の背景色を変更したいから、alert-あなたが私の質問で見ることができるように、真の**ブール値、そして**誤った**ブール値への警告警告。そのため、新しいCSSではすべてが管理下にあります。私はすべてのテーブルのjsを書く必要はありません。 クライアント側にブール値を送信するのではなく、** true **または** false **とします。それが真実なら、私はそれを上記の「食用」のような意味のあるものに変えています。この場合、あなたのソリューションはあまり効率的ではありません。 – SEER

0

、あなたのテーブルにテーブルストライプクラスが含まれている場合、この問題が発生します。私のソリューションによれば、このクラスを使用しないで、あなたが望むように動作します。

関連する問題