2010-12-20 12 views
7

Gibt es sowieso bedingte Formatierung mit WebGrid in ASP.NET MVC 3 zu tun?ASP.NET MVC 3 WebGrid - bedingte Spaltenformatierung

Ich weiß, was ich sagen kann: ... grid.Column("PropertyName", "Header Name", style: "bold") ...

und es wird HTML, die für das TD machen, das sagt: class="bold".

Was ich möchte, ist, einige TDs in einem Stil und andere TDs in einem anderen Stil zu rendern. Wie: ... grid.Column("PropertyName", "Header Name", style: (item) => (item.Property > 100) ? "bold" : "normal")) ....

aber dies verursacht den Fehler "Best überladene Methode übereinstimmen ... hat einige ungültige Argumente."

Irgendeine Idee, wenn das möglich ist?

Dank .Jim Biddison

Antwort

5

Sie können dies mit einigen JQuery tun:

<script type='text/javascript'> 
    $(document).ready(function() { 
     jQuery.each($('tbody tr td'), function() { 
      if (this.textContent == "some value") { 
       $(this).addClass("some class"); 
      } 
     }); 
    }); 
</script> 

Natürlich werden Sie die Logik in der jeder Schleife ändern müssen ...

Ich hoffe, das hilft.

7

Ich weiß, ich bin ein bisschen spät mit der Antwort, aber wenn jemand noch für diese Art der bedingten Formatierung/Spaltenwert suchen verbindlich für WebGrid hier ist somehting, das funktioniert:

@grid.GetHtml(
    columns: grid.Columns(
     grid.Column(format: (item) => (item.someproperty !=null) ? 
     Html.Raw("I've got value") : 
     Html.Raw("I don't :(")) 
    ) 
) 
+1

dies bedingten Text, aber nicht die bedingte Formatierung/Styling. Ich denke, er versucht, den Stil zu ändern –

0

ich nicht denke, die Style-Eigenschaft akzeptiert Funktionen. Sie können jQuery verwenden oder hier ist ein Hack:

Hack

0

Für googler, eine verbesserte Version der Antwort Torm:

@grid.GetHtml(
    columns: new[] 
    {  
     grid.Column(format:item => Html.Raw("<span" + (item.Property > 100 ? " style='bold'" : "") + ">" + item.Property + "</span>")), 
    } 
)