2016-04-04 17 views
0

Kullanıcılar için ajax çağrısı üzerinden veritabanından çekilen farklı değerleri seçmeleri için kendo multiselect widget'ı kullanıyorum. Ajax çağrısı, döndürülen verileri daraltan bir parametre olan searchValue değerini alır. İşte benim denetleyicim:ajax verisi ile kendo multiselect yerleştiriliyor

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

1) Arama kutusundaki değeri kullanmak için metin kutusundan değeri nasıl alırsınız? Aşağıdaki alanı söz konusu yorumladı.

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

Yardımcı olur emin değilim, ama burada json yapısı şöyledir: İşte benim dataSource: Ben multiselect aracı oluşturduğunuzda nereye

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 
}); 

Ve burada ajax çağrısından döndürdü:

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

ikinci sorum yüzden sonrasına kadar olduğunu sormak bekleyecek yanıt verebilecek yukarıdaki ilk soru Çözme.

cevap

0

İstek parametreleri için işlevleri kullanabilirsiniz.

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 
}); 

Notlar

  • Bu gerçekten bir GET isteği olmalıdır. Sunucudaki verileri gerçekten değiştiren istekler için POST ve yalnızca sunucudan veri almak isteyen istekler için GET kullanın.
  • JSON.stringify() ürününe ihtiyacınız yoktur. jQuery bunu şeffaf bir şekilde yapar.
  • dataType'un belirtilmesi tamamen gereksizdir, jQuery bunu yanıt başlıklarından belirleyecektir.
  • JQuery ile giriş değerini okumak temiz değil. Bunun yerine veriye bağlı model özelliğini kullanın.
  • Geri arama çağrısı (options.success())
  • Bu örnekte HTTP hatası ele alınmamaktadır, bunu eklemelisiniz.
+0

Cevabınız için teşekkür ederiz. Şu an bu bölgeden taşındım, yakında geri döneceğim. Şimdilik, doğru cevap olarak işaretleyeceğim. –

İlgili konular