2016-04-04 138 views
0

我正在使用kendo multiselect小部件,以便用戶通過ajax調用從數據庫中選擇不同的值。 ajax調用需要一個參數searchValue,這將縮小返回的數據範圍。這裏是我的控制器:使用ajax數據填充kendo multiselect

[HttpPost] 
    public JsonResult ProfitabilitySearch(string searchValue) 
    { 
     return Json(InventoryDataAccess.ProfitabilitySearch(searchValue)); 
    } 

1)你如何從文本框中獲得值作爲你的searchValue?我評論了下面的問題。 這裏是我的數據源:

var searchDataSource = new kendo.data.DataSource({ 
    transport: { 
     read: function() { 
      $.ajax({ 
       type: 'POST', 
       url: Firm.ProfitabilitySearchURL, 
       contentType: 'application/json; charset=utf-8', 
       dataType: 'json', 
         //'SuperClient' is test data to see if it works, but what do i 
         //need to make searchValue = what I type? 
       data: JSON.stringify({ searchValue: 'SuperClient'}), 
       success: function (data) { 
        return data.RESULT; 
       } 
      }); 
     } 
    }, 
    group: { field: 'category' }, 
    serverFiltering: true 
}); 

而且這裏是我創作的多選控件:

var TKSearch = $("#TKSearch").kendoMultiSelect({ 
     dataSource: searchDataSource, 
     autoBind: false, 
     minLength: 3, 
     placeholder: 'Search Timekeepers...', 
     dataTextField: 'label', 
     dataTextValue: 'value', 
     delay: 200 
    }).data("kendoMultiSelect"); 

我不知道這是否會幫助,但在這裏是作爲JSON的結構從AJAX調用返回:

{"label":"SUNFLOWER REALTY CORP. (023932)","value":"023932","category":"RC"} 

解決上述第一個問題可以回答我的第二個問題,所以我會迫不及待地問那,直到後。

回答

0

您可以對請求參數使用函數。

var searchDataSource = new kendo.data.DataSource({ 
    transport: { 
     read: function (options) { 
      $.ajax({ 
       type: 'POST', 
       url: Firm.ProfitabilitySearchURL, 
       contentType: 'application/json; charset=utf-8', 
       data: { 
        searchValue: function() { 
         // better: use a model property instead of this 
         return $("#TKSearch").data('kendoMaskedTextBox').value(); 
        } 
       }, 
       success: function (data) { 
        options.success(data.RESULT); 
       } 
      }); 
     } 
    }, 
    group: { field: 'category' }, 
    serverFiltering: true 
}); 

  • 真的應該是一個GET請求。對於實際上更改服務器上的數據的請求使用POST,而對於僅從服務器檢索數據的請求使用POST。
  • 你自己並不需要JSON.stringify()。 jQuery透明地做到了這一點。
  • 指定dataType是完全多餘的,jQuery將從響應頭中解析出來。
  • 通過jQuery讀取輸入值並不乾淨。改爲使用數據綁定模型屬性。
  • 回調調用(options.success()
  • 此示例缺少HTTP錯誤處理,您必須添加該項。
+0

謝謝你的回答。我暫時從這個地區搬家,我很快就會回來。現在,我會將其標記爲正確的答案。 –