2013-05-29 69 views
2

我評估劍道UI現在我們大的應用程序使用。我們有一種情況,我們在下拉列表中有很多值(如200+),並且有大於1的下拉值。所以如果我們有一個複雜的形式。頁面加載需要時間來呈現表單。 (由於每個盒子需要從服務中加載並填滿)。劍道UI - 下拉列表中設置值autoBind = FALSE設置

我們通過對需求的支持(如autoBind屬性)的下拉劍道UI列表編寫我們自己的asp.net web控件避免這一點。現在

,DropDownList的從KendoUI供應以autobind =假的目的,但設定值時,它從遠程綁定第一獲取數據,然後選擇適當的值。 (這是冷靜和小名單確實不錯),但有可能,這將意味着,當我們加載網頁設置的值就會發出每個下拉菜單的遠程綁定的電話。

現在,

我們可以設定值/文本顯示時不發出遠程綁定。我們希望遠程綁定僅在用戶單擊下拉菜單時完成。 (不是在填表時)。這將節省對系統的額外呼叫,並幫助快速將表單呈現給用戶。

這裏是JS斌

http://jsbin.com/ayivad/3/edit

如果從劍道UI有人想我幫忙 - 讓我知道,但這個想法將使我們能夠以良好的使用使用劍道UI的下拉菜單。

<input type="button" id="btnSet" value="Set Value (Click without clicking on DropDown" /> 
    <br/><br/> 
<select id="products"></select> 



$(document).ready(function() { 
     $("#products").kendoDropDownList({ 
      dataTextField: "ProductName", 
      dataValueField: "ProductID", 
      autoBind: false, 
      dataSource: { 
       transport: { 
        read: { 
         dataType: "jsonp", 
         url: "http://demos.kendoui.com/service/Products", 
        } 
       } 
      } 
     }); 
     var combobox = $("#products").data("kendoDropDownList"), 
     setValue = function (e) { 
      if (e.type != "keypress" || kendo.keys.ENTER == e.keyCode) 
       combobox.value(3); 
     }; 
     $("#btnSet").click(setValue); 
    }); 

感謝, 里茲

回答

4

1)設置文本,而不是價值:http://docs.kendoui.com/api/web/dropdownlist#configuration-text

劍道: 文本字符串(缺省: 「」) 定義窗口小部件的文本,當autoBind設置爲false。 例

$("#dropdownlist").kendoDropDownList({ 
    autoBind: false, 
    text: "Chai" 
}); 

髒替代 - 嘗試劫持DDL「可選標籤」您的需要。加載數據的頁面包容你想在DDL來顯示值,然後初始化DDL與等於你要顯示的值可選值。一旦用戶打開ddl,遠程數據將加載,一旦數據加載,您將覆蓋/刪除可選標籤和愉快的日子。 http://docs.kendoui.com/api/web/dropdownlist#configuration-optionLabel (考慮分拆名單,200長的下拉我們從人性化爲止。)

$("#dropdownlist").kendoDropDownList({ 
optionLabel: "My value" }); 

還要考慮使用劍道組合框,畢竟汽車經過3個字符左右齊全的情況下,聽起來很明智的解決您的200項。我們對500 +組合框使用相同的解決方案。

+0

http://jsbin.com/ayivad/15/edit –

+0

我試圖在上面jsbin編輯......它不optionLabel與價值和測試工​​作。所以那裏有什麼問題。可能是一個錯誤。你的建議與我的想法非常吻合。而optionLabel技巧似乎將工作,如果我能得到與價值工作。 –

+1

終於搞定了。感謝您指向正確的方向@Bobby_D_。我必須稍微調整一下這裏的jsbin。它可以幫助其他人。 http://jsbin.com/evinat/21/edit –