3
votes

I have a kendo grid in which i need to show a column with concatenated values. obviously i need to choose a row template or a template field in a columns attribute.

 { title: "StreetID-STREETNAME", filterable: true, template: "#: strID#-#: strName #" },

But after running it am not able to see any filter icon on the particular grid column.

Any clue or link will help me in a great way. After lot of R&D I couldn't see any live examples using template columns with a filtering.

3

3 Answers

2
votes

This show how you can customize grid filter.

http://demos.telerik.com/kendo-ui/web/grid/filter-menu-customization.html

                        {
                            field: "City",
                            width: 130,
                            filterable: {
                                ui: cityFilter
                           }
                        },

            function cityFilter(element) {
                element.kendoDropDownList({
                    dataSource: cities,
                    optionLabel: "--Select Value--"
                });
            }
2
votes

So finally i concluded it as like. if you need a filter then you need to mention a FIELD attribute. There is no work around.

So i created an extra column from webservice itself and sending an extra concatenated column. So now am able to see a string filter.

1
votes

check this sample code

copy and paste below code and save as index.html

<!DOCTYPE html>
<html>
<head>
<link href="http://cdn.kendostatic.com/2013.2.716/styles/kendo.common.min.css" rel="stylesheet" type="text/css" />
<link href="http://cdn.kendostatic.com/2013.2.716/styles/kendo.default.min.css" rel="stylesheet" type="text/css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://cdn.kendostatic.com/2013.2.716/js/kendo.all.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
<style>
 .photo {
                    width: 140px;                    
                }
                .details {
                    width: 400px;
                }                
                .title {
                    display: block;
                    font-size: 1.6em; 
                }
                .description {
                    display: block;
                    padding-top: 1.6em;
                }
                .employeeID {
                    font-family: "Segoe UI", "Helvetica Neue", Arial, sans-serif;
                    font-size: 50px;
                    font-weight: bold;
                    color: #898989;
                }
                td.photo, .employeeID {
                    text-align: center;
                }
                .k-grid-header .k-header {
                    padding: 10px 20px;
                }
                .k-grid td {
                    background: -moz-linear-gradient(top,  rgba(0,0,0,0.05) 0%, rgba(0,0,0,0.15) 100%);
                    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(0,0,0,0.05)), color-stop(100%,rgba(0,0,0,0.15)));
                    background: -webkit-linear-gradient(top,  rgba(0,0,0,0.05) 0%,rgba(0,0,0,0.15) 100%);
                    background: -o-linear-gradient(top,  rgba(0,0,0,0.05) 0%,rgba(0,0,0,0.15) 100%);
                    background: -ms-linear-gradient(top,  rgba(0,0,0,0.05) 0%,rgba(0,0,0,0.15) 100%);
                    background: linear-gradient(to bottom,  rgba(0,0,0,0.05) 0%,rgba(0,0,0,0.15) 100%);
                    padding: 20px;
                }
</style>
<script>
$(document).ready(function() {
                    $("#grid").kendoGrid({
                        dataSource: {
                          type: "odata",
                          transport: {
                              read: {   
                                  url: "http://demos.kendoui.com/service/Northwind.svc/Employees"
                              }
                          },
                          schema: {
                                model: {
                                    fields: {
                                        EmployeeID: { type: "number" },
                                        Title: { type: "string" }
                                    },
                                    id: "EmployeeID"
                                }
                            }
                        },
                        columns: [
                            { field: "Title", width: 400 }, 
                            { field: "EmployeeID" }
                        ],
                        rowTemplate: kendo.template($("#rowTemplate").html()),
                        height: 430,
                        filterable: true
                    });
               });</script>
</head>
<body>
        <div id="grid"></div>

  <script id="rowTemplate" type="text/x-kendo-tmpl">
                <tr>
                    <td class="details">
                       <span class="title">#: Title #</span>
                       <span class="description">Name : #: FirstName# #: LastName#</span>
                       <span class="description">Country : #: Country# </span>
                    </td>
                    <td class="employeeID">
                       #: EmployeeID #
                    </td>
               </tr>
  </script>
</body>
</html>

you need to customize it. hope this help you