2015-10-23 16 views
10

मैं MVVM पद्धति का उपयोग कर एक केंडो ग्रिड का निर्माण कर रहा हूँ और मैं 2 कस्टम फ़िल्टर हैं:कस्टम फ़िल्टर के साथ केंडो MVVM ग्रिड

  1. extra = false और कस्टम ऑपरेटरों
  2. के साथ एक कस्टम स्तंभ फिल्टर के साथ एक सामान्य ग्रिड फिल्टर एक combobox

this Kendo Grid demo के समान ही। मैं सिर्फ यह स्तंभ पर data-filterable विशेषता या filterable ui का उपयोग कर MVVM पैटर्न के साथ काम करना आरंभ नहीं कर पा रहे:

<div data-role="grid" 
    data-filterable="customGridFilter" 
    data-columns="[ 
     { field: 'Id', hidden: 'true' }, 
     { field: 'Name', filterable: '{ ui: customNameFilter }' }, 
     { field: 'Value' } 
    ]" 
    data-bind="source: gridDs"> 
</div> 

मैं created a JS Fiddle है वर्णन करने के लिए क्या मैं के लिए जा रहा हूँ।

+1

एक के लिए की तरह ठीक काम करता है, 'फ़िल्टर में:' उन बाहर ले 1.9.1 {ui: ...} ' , सिर्फ फिल्टर करने योग्य होना चाहिए: {ui: customerNameFilter}। –

+0

ऐसा लगता है कि आप सही हैं। अभी भी कोई भाग्य नहीं है। – dmathisen

+1

यह काम कर रहा है [यहां] (http://dojo.telerik.com/uwAvU) –

उत्तर

1

वास्तव में यह सिर्फ

  • data-filterable="customGridFilter" की तरह कुछ बिंदु याद किया data-filterable="true",
  • हो जाना चाहिए और यह भी केन्डो डोजो में वे jQuery 1.9.1 का उपयोग कर रहे और तुम्हारा कॉम्पैक्ट (धार) जो कारण मुद्दा।

jQuery के लिए बदलने के बाद यह नीचे

<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <meta charset="utf-8"> 
 
    <title>Untitled</title> 
 

 
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2015.3.930/styles/kendo.common.min.css"> 
 
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2015.3.930/styles/kendo.rtl.min.css"> 
 
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2015.3.930/styles/kendo.default.min.css"> 
 
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2015.3.930/styles/kendo.all.min.css"> 
 

 
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
 
    <script src="http://kendo.cdn.telerik.com/2015.3.930/js/angular.min.js"></script> 
 
    <script src="http://kendo.cdn.telerik.com/2015.3.930/js/jszip.min.js"></script> 
 
    <script src="http://kendo.cdn.telerik.com/2015.3.930/js/kendo.all.min.js"></script> 
 
</head> 
 

 
<body> 
 
    <div id="test"> 
 
    <script> 
 
     var customNameFilter = customNameFilter || null; 
 
    </script> 
 
    <div data-role="grid" data-filterable="true" data-columns="[ 
 
      { field: 'Id', hidden: 'true' }, 
 
      { field: 'Name', filterable: { ui: customNameFilter } }, 
 
      { field: 'Value' } 
 
     ]" data-bind="source: gridDs"></div> 
 
    </div> 
 
    <script> 
 
    $(document).ready(function() { 
 
     customNameFilter = function(e) { 
 
     console.log("test") 
 
     e.kendoComboBox({ 
 
      dataSource: { 
 
      data: [{ 
 
       Id: 1, 
 
       Name: "Test1" 
 
      }, { 
 
       Id: 2, 
 
       Name: "Test2" 
 
      }, { 
 
       Id: 3, 
 
       Name: "Test3" 
 
      }] 
 
      }, 
 
      dataValueField: "Id", 
 
      dataTextField: "Name", 
 
      filter: "contains" 
 
     }); 
 
     }; 
 
     var viewModel = kendo.observable({ 
 
     gridDs: new kendo.data.DataSource({ 
 
      data: [{ 
 
      Id: 1, 
 
      Name: "Test1", 
 
      Value: 3 
 
      }, { 
 
      Id: 2, 
 
      Name: "Test2", 
 
      Value: 5 
 
      }, { 
 
      Id: 3, 
 
      Name: "Test3", 
 
      Value: 2 
 
      }, { 
 
      Id: 4, 
 
      Name: "Test4", 
 
      Value: 7 
 
      }] 
 
     }), 
 
     customGridFilter: { 
 
      extra: false, 
 
      operators: { 
 
      string: { 
 
       contains: "Contains", 
 
       doesnotcontain: "Does not contain", 
 
       eq: "Is equal to", 
 
       neq: "Is not equal to", 
 
       startswith: "Starts with", 
 
       endswith: "Ends with" 
 
      } 
 
      } 
 
     }, 
 

 
     }); 
 

 
     kendo.bind($('#test'), viewModel); 
 
    }); 
 

 
    // this doesn't work 
 
    //var grid = $('#test').data('kendoGrid'); 
 
    //grid.options.filterable = customFilter; 
 
    </script> 
 
</body> 
 

 
</html>

संबंधित मुद्दे