2015-09-08 3 views
1

Я использую сетку JQuery KendoUI. У меня есть специальный редактор combobox, который привязан к источнику данных.Сортировка пользовательского раскрывающегося списка в сетке KendoUI

Моя проблема заключается в том, что я могу сортировать другие столбцы этой сетки отлично, но этот столбец сортировки дает неожиданные случайные результаты. Может кто-нибудь, пожалуйста, помогите мне, как я могу сортировать эту колонку? код прилагается.

{ field: "Status", editor: statusDropDownEditor, template: '#=GetStatusColor(Status.Text)#', width: "90px" } 

var statusData = new kendo.data.DataSource({ 
     data: [ 
      { Text: "New", Value: "a9d59cd8-f569-45c4-bfdd-05f41db9e2f3" }, 
      { Text: "Ready", Value: "e4aa129f-44b6-44e3-b5da-2ecc5c5c20c0" }, 
      { Text: "Query", Value: "50b1af07-71a0-462f-86ec-a164d43a9b65" }, 
      { Text: "Cancelled", Value: "79ee44ea-bc39-4a71-ad6d-c47886d0f69b" } 
     ] 
    }); 

function statusDropDownEditor(container, options) { 
     $('<input data-text-field="Text" data-value-field="Value" data-bind="value:' + options.field + '"/>') 
      .appendTo(container) 
      .kendoDropDownList({ 
       autoBind: false, 
       dataTextField: "Text", 
       dataValueField: "Value", 
       dataSource: statusData 
      }); 
    } 

ответ

1

Чтобы решить эту проблему, используйте пример кода из этой ссылки здесь.

http://docs.telerik.com/kendo-ui/controls/data-management/grid/how-to/foreign-key-column-sorting-by-text

образец фрагмент кода

<script> 
    var categories = [ 
     { "value": 1, "text": "Beverages"}, 
     { "value": 2, "text": "Condiments"}, 
     { "value": 3, "text": "Confections"}, 
     { "value": 4, "text": "Dairy Products"}, 
     { "value": 5, "text": "Grains/Cereals"}, 
     { "value": 6, "text": "Meat/Poultry"}, 
     { "value": 7, "text": "Produce"}, 
     {"value": 8, "text": "Seafood"}]; 

    //create dictionary of text-values for the FKC 
    var categoriesDict = {}; 
    for (var i=0; i<categories.length;i++) { 
     categoriesDict[categories[i].value] = categories[i].text; 
    } 

    $(document).ready(function() { 
     var dataSource = new kendo.data.DataSource({ 
     pageSize: 20, 
     data: products, 
     change: function(e) { 
      if (!e.action) { 
      this.data(); 
      } 
     }, 
     schema: { 
      model: { 
      id: "ProductID", 
      fields: { 
       ProductID: { editable: false, nullable: true }, 
       ProductName: { validation: { required: true} }, 
       CategoryID: { field: "CategoryID", type: "number", defaultValue: 1 }, 
       UnitPrice: { type: "number", validation: { required: true, min: 1} } 
      }, 
      //define calculated field: 
      CategoryName: function() { 
       return categoriesDict[this.get("CategoryID")]; 
      } 
      } 
     } 
     }); 

     $("#grid").kendoGrid({ 
     dataSource: dataSource, 
     groupable: true, 
     pageable: true, 
     sortable: true, 
     height: 540, 
     toolbar: ["create"], 
     columns: [ 
      { field: "ProductName", title: "Product Name" }, 
      //bind column to the calculated field and specify custom editor: 
      { field: "CategoryName()", width: "200px", title: "Category", editor: categoryDropDownEditor }, 
      { field: "UnitPrice", title: "Unit Price", format: "{0:c}", width: "200px" }, 
      { command: "destroy", title: " ", width: "150px"}], 
     editable: true 
     }); 
    }); 


    function categoryDropDownEditor(container, options) { 
     //specify the value field in the "data-bind" attribute 
     $('<input required data-text-field="text" data-value-field="value" data-bind="value:CategoryID"/>') 
     .appendTo(container) 
     .kendoDropDownList({ 
     autoBind: false, 
     dataSource: categories 
     }); 
    } 
    </script> 
+0

Хотя ссылка может ответить на вопрос, связывает изменение, так что переполнение стека предпочитает не зависеть от них. [Было бы лучше] (// meta.stackoverflow.com/q/8259) включить основные части ответа здесь и предоставить ссылку для справки. –

+0

Можете ли вы, пожалуйста, заменить ссылку на соответствующий код или резюме содержания? Каждое сообщение должно быть самодостаточным, не покидая сайт или не нуждаясь в том, чтобы перейти к другому сообщению, чтобы понять ответ. см. [help/answering] (http://stackoverflow.com/help/answering) –

+1

Спасибо @DaveSchweisguth и MS Yvette за это. – chunky

0

раскрывающееся по умолчанию сортировка по полю значения. Поэтому выпадающий список сортируется по указателям. Чтобы решить эту проблему (если возможно), вы можете реорганизовать свой код для использования инкрементных целых чисел (1,2,3,4) в качестве значений вашего источника данных. В настоящее время у меня такая же проблема, и я не нашел способ настроить сортировку раскрывающегося списка в текстовом поле.

Смежные вопросы