0

검도 UI 그리드가 있으며 배치 작업을 수행하고 있습니다. kendo dropdownlist에서 데이터를 채우는 열 중 하나에서 해당 드롭 다운 값을 변경할 때 편집하는 동안 순간에 변경되고 있지만 행의 바깥을 클릭하면 이전 값이 다시 나타납니다. 드롭 다운에서 선택한 값을 유지하는 방법은 무엇입니까? 당신이 실제로 MathmetricalSymbolCodeValue와의 값을 설정 아무것도 ...검도에서 일괄 처리를 수행하는 동안 이전에 선택한 값으로 재설정되는 검도 드롭 다운리스트 값 검도

var rateScheduleItemGridDatasource = new kendo.data.DataSource({ 
      transport: { 
       read: { 
        type: 'get', 
        url: config.apiServer + "api/RateSchedule/GetAllRateScheduleItems?rateScheduleId=" + selectedRateScheduleId, 
        dataType: "json" 
       }, 
       destroy: { 
        type: 'delete', 
        url: function (options) { 
         $.ajax({ 
          url: config.apiServer + "api/RateSchedule/DeleteRateScheduleItem?rateScheduleItemId=" + options.RateScheduleItemId, 
          type: 'delete', 
          data: ko.toJSON(options), 
          contentType: "application/json", 
          success: function (data) { 
           popupNotification.show(updateSuccessMessage, "success"); 
           rateScheduleItemGridDatasource.read(); 
          }, 
          error: function (jqXHR, textStatus, errorThrown) { 
           popupNotification.show(updateFailureMessage, "error"); 
          } 
         }); 
        }, 
        dataType: "json", 
        contentType: "application/json" 
       } 
      }, 
      pageSize: 10, 
      serverPaging: true, 
      serverSorting: true, 
      serverFiltering: true, 
      serverGrouping: true, 
      serverAggregates: true, 
      batch: true, 
      schema: { 
       data: "Data", 
       total: "Total", 
       errors: "Errors", 
       model: { 
        id: "RateScheduleItemId", 
        fields: { 
         RateScheduleItemId: { type: "number", editable: false, nullable: false }, 
         RateScheduleId: { type: "number", editable: false, nullable: false, validation: { required: true } }, 
         MathmetricalSymbolCode: { type: "number", nullable: true, editable: true, validation: { required: false } }, 
         MathmetricalSymbolCodeValue: { type: "string", nullable: true, editable: true, validation: { required: false } }, 
         MeasureTypeCode: { type: "number", nullable: true, editable: true, validation: { required: false } }, 
         MeasureTypeCodeValue: { type: "string", nullable: true, editable: true, validation: { required: false } }, 
         MultiplierRate: { type: "number", nullable: true, editable: true, validation: { required: false } }, 
         RangeLowerNumber: { type: "number", nullable: true, editable: true, validation: { required: false } }, 
         RangeUpperNumber: { type: "number", nullable: true, editable: true, validation: { required: false } }, 
         RateTier: { type: "string", nullable: true, editable: false, validation: { required: false } } 
        } 
       } 
      } 
     }); 
$("#rateScheduleItemGrid") 
       .kendoGrid({ 
        columns: [ 
         { "command": [{ name: "destroy", text: "&nbsp" }], "width": "60px" }, 
         { "title": "Rate Tier", "width": "100px", "field": "RateTier" }, 
         { "title": "Operand", "width": "100px", "field": "MathmetricalSymbolCode", "editor": rateScheduleItemOperandDropDownEditor, "template": "#= (MathmetricalSymbolCodeValue == null) ? ' ' : MathmetricalSymbolCodeValue#" }, 
         { "title": "Range Type", "width": "100px", "field": "MeasureTypeCode", "editor": rateScheduleItemRangeTypeDropDownEditor, "template": "#= (MeasureTypeCodeValue == null) ? ' ' : MeasureTypeCodeValue#" }, 
         { "title": "Range (From)", "width": "100px", "field": "RangeLowerNumber" }, 
         { "title": "Range (to)", "width": "100px", "field": "RangeUpperNumber" }, 
         { "title": "Rate (Multiplier)", "width": "100px", "field": "MultiplierRate" } 
        ], 
        toolbar: kendo.template($("#rateScheduleGridItemTemplate").html()), 
        resizable: true, 
        editable: true, 
        groupable: false, 
        filterable: true, 
        pageable: { 
         pageSize: 10, 
         pageSizes: [10, 50, 100, 150, 200, 250] 
        }, 
        sortable: true, 
        height: 200, 
        dataSource: rateScheduleItemGridDatasource, 
        cancel: function (e) { 
         dirty = false; 
        }, 
        save: function (e) { 
         dirty = false; 
        } 
       }); 
function rateScheduleItemOperandDropDownEditor(container, options) { 
      $('<input data-bind="value:' + options.field + '"/>') 
       .appendTo(container) 
       .kendoDropDownList({ 
        dataTextField: "ReferenceValue", 
        dataValueField: "ReferenceValueId", 
        dataSource: rateScheduleItemOperandReferenceData, 
        optionLabel: "Select Operand" 
       }); 
     } 

     function rateScheduleItemRangeTypeDropDownEditor(container, options) { 
      $('<input data-bind="value:' + options.field + '"/>') 
       .appendTo(container) 
       .kendoDropDownList({ 
        dataTextField: "ReferenceValue", 
        dataValueField: "ReferenceValueId", 
        dataSource: rateScheduleItemRangeItemReferenceData, 
        optionLabel: "Select Range Type" 
       }); 
     } 

답변

0

당신은 MathmetricalSymbolCode 및 MeasureTypeCode로 열을 바인딩하지만 MathmetricalSymbolCodeValue 및 MeasureTypeCodeValue에 템플릿을 기반으로 한 :하지만 ... 여기 내 코드입니다 MeasureTypeCodeValue 그래서 그들은 영원히 null로 유지됩니다.

드롭 다운 목록에서 선택을하면 "코드"필드 이 아닌 값이 선택됩니다. "CodeValue"필드 ... 그리드와 드롭 다운 목록은 키 - 값 쌍이라는 것을 모릅니다. 사용

  1. : 2 개 중요한 포인트가 있습니다 http://dojo.telerik.com/@Stephen/OCEpa

    : 여기

    내가 피연산자 열 작업이 (그래서 불통 나는 당신의 데이터에 액세스하지 않고 실행할 수 있습니다) 당신의 설정과 예제 valuePrimitive : 값이 nullable 인 경우 필요한 종류 인 DropDownList 구성에 대해 true입니다 (http://docs.telerik.com/kendo-ui/api/javascript/ui/dropdownlist#configuration-valuePrimitive)
  2. 드롭 다운 목록에서 값을 선택하면 (ID를 반환 함) 해당 ID를 표시 할 텍스트에 매핑해야합니다 세포에서 어떻게 든. 검도 눈금이 목적 (http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#configuration-columns.values)

다른 가능한 해결책 대신 MathmetricalSymbolCode 번호 필드에 결합 인 값을 제공하고, 적절한와 코드와 CodeValue 필드 모두 구성된 복잡한 오브젝트 컬럼 바인딩 열 템플릿 ...하지만 그게 더 복잡해 (특히 dropdownlist를 연결) 그리고 나는 그것을 할 때만.