Изменение формата отображения сетки текста Telerik. Если «Да», зеленый. Если «Нет». Красный. - PullRequest
1 голос
/ 17 декабря 2010

У меня есть простая сетка, в которой я хочу, чтобы 4 столбца установили, что если отображается «Да», то это зеленый, а если отображается «Нет», то это красный, это только 2 значения, которые могут отображать эти столбцы

c.Bound(x => x.col1);
                    c.Bound(x => x.col2)
                        .Title("col2 example");
                    c.Bound(x => x.col3)
                        .Title("col3 example");
                    c.Bound(x => x.col4)
                        .Title("col4 example");
                    c.Bound(x => x.col5)
                        .Title("col5 example");

col2-5 - это те, о которых идет речь

                col1 = x.col1,
                col2 = (x.col2Id.HasValue)  ? "Yes" : "No",
                col3 = (x.col3Id.HasValue) ? "Yes" : "No",
                col4 = (x.col4Id.HasValue) ? "Yes" : "No",
                col5 = (x.col5) ? "Yes" : "No"

ofc Все столбцы ... имеют разные имена, но это не так.

Редактировать -Попробовал найти код в моем последнем проекте, клиентский шаблон = всегда будет отображаться только в этих полях "Да" зеленым, серверный шаблон = теперь будет отображаться в полях <span style='color:green'>Yes</span>, если в поле должно отображаться "да" и <span style='color:red'>No</span>если поле предназначено для отображения нет.так что оба бита кодов наполовину работают, и единственное различие между мной, использующим их тогда и сейчас, заключается в том, что я сейчас использую mvc3.

Редактировать 2 - В случае, если это изменение с последней версией Telerik или что-то ещеЯ не знаю, но проблема была решена, если я изменил код шаблона клиента, как показано ниже.

.ClientTemplate("<# if(Col2 == 'Yes') { #><span style='color:green'>Yes</span><# } else { #><span style='color:red'>No</span><# } #>")

Ответы [ 2 ]

3 голосов
/ 18 декабря 2010

Вы должны использовать либо сервер, либо клиентские шаблоны для достижения того же (в зависимости от привязки вашей сетки). Вот шаблон сервера:

c.Bound( x => x.col4).Template( x => 
{
%>
   <%= (x.col4.HasValue ? "<span style='color:green'>Yes</span>" : "<span style='color:red'>No</span>") %>
<%
});

А вот клиентский шаблон:

c.Bound( x => x.col4).ClientTemplate("<# if(col4) { #><span style='color:green'>Yes</span><# } else { #><span style='color:red'>No</span><# } #>");
1 голос
/ 01 марта 2011

Я только что обнаружил, что есть событие, связанное со строкой на стороне клиента, которое можно использовать для изменения стиля строки в зависимости от ее содержимого.например,

    function onGridRowDataBound(e) {
        var row = e.row;
        var dataItem = e.dataItem;

        var eligible = e.row.cells[0].innerHTML.indexOf('Not') >= 0;
        if (eligible) {
            //Set the background of the entire row
            row.style.backgroundColor = "green";
        }
    }
...