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 –