Saltar al contenido

En una cuadrícula de kendo, ¿puedo establecer atributos de columna dinámicamente con una función?

Solución:

Dijiste que no querías usar plantillas, pero creo que estabas hablando de plantillas de columna.

Puede cambiar el marcado del td en sí utilizando una plantilla de fila:

<script id="template" type="text/x-kendo-template">
    <tr data-uid="#= uid #">
      # this.columns.forEach(function(col) { 
          var val = data[col.field],
          css,
          style=""
          cClasses=""; 
          if (typeof col.attributes === 'function') {
              css = col.attributes(data); 
              cClasses = css["class"];
              style = css.style
          } 
      #         
          <td class="#= cClasses #" style="#= style #">
            #= data[col.field] #
          </td>
      # }) #
    </tr>
</script>

Sin embargo, para que el bucle funcione, debe vincular su plantilla a la cuadrícula:

var grid = $("#grid").kendoGrid({
    columns: [{
        field: "name",
        title: "Name",
        attributes: function (e) {
            return {
                "class": "table-cell",
                style: e.name == "Jane Doe" ? 
                       "background-color: red" : "background-color: green"
            };
        }
    }, {
        field: "title",
        title: "Title"
    }],
    dataSource: [{name: "Jane Doe", title: "Dr. Dr."}, 
                 {name: "John Doe", title: "Senior Citizen"}]
}).data("kendoGrid");

var template = kendo.template($("#template").html()).bind(grid);
grid.setOptions({
    rowTemplate: template
});  

(manifestación)

Como alternativa, también puede crear atributos como este:

{
    field: "name",
    title: "Name",
    attributes: { 
        "class": "# if(data.name === 'Jane Doe') { # red # } else { # green # } #" 
    }
},

Esto tendría la ventaja de no usar la plantilla de fila, pero tendría que usar la sintaxis de la plantilla para la lógica.

(manifestación)

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *