2010-12-20 29 views
7

¿Hay alguna forma de formatear condicional con Webgrid en ASP.NET MVC 3?ASP.NET MVC 3 WebGrid - Formato de columna condicional

sé lo que puedo decir: ... grid.Column("PropertyName", "Header Name", style: "bold") ...

y rendirá HTML que para el TD que dice: class="bold".

Lo que quiero es renderizar algunos TDs en un estilo y otros TDs en otro estilo. Me gusta: ... grid.Column("PropertyName", "Header Name", style: (item) => (item.Property > 100) ? "bold" : "normal")) ....

pero esto causa el error "La mejor coincidencia de método sobrecargada ... tiene algunos argumentos no válidos".

¿Alguna idea si esto es posible?

Gracias .Jim Biddison

Respuesta

5

Usted puede hacer esto con un poco de jQuery:

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

Por supuesto, usted tendrá que modificar la lógica dentro de la cada bucle ...

Espero que ayude.

7

Yo sé que soy un poco tarde con la respuesta, pero si alguien todavía está buscando ese tipo de valor de formateo/columna condicional vinculante para WebGrid aquí es somehting que funciona:

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

este es el texto condicional, pero no formato condicional/estilo. Creo que está tratando de cambiar el estilo –

0

no lo hago piense que la propiedad de estilo acepta funciones. Puede usar jQuery o aquí es un truco:

Hack

0

Para googler, una versión mejorada de la respuesta Torm:

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