2014-06-17 43 views
5
<script id="myTmpl" type="text/x-kendo-tmpl"> 
<div id="myDropDown"> 
</div> 

</script> 

这是我的一个小代码示例。有没有办法在div标签上创建一个下拉列表,因为div实际上并不是一个DOM对象,因此我无法使用Jquery选择器进行选择?在kendo模板中创建kendo下拉列表

$('#myDropDown').kendoDropDownList // invalid, item doesn't exist. 

我不希望做一个下降,由HTML下来,因为地方在我的代码我有数据抓取,我的下拉列表中,并且需要时间来获取这些数据。这就是为什么我希望能够像做

$('#myDropDown').setDataSource //or however the correct syntax is. 

所以2个问题:我如何实例化一个剑道从模板下拉。

如果这是不可能的,如何'有'dataSourceChanged事件为我的下拉列表,所以我可以更新我的下拉列表中的数据。

回答

2

我跑进尝试为网格创建自定义弹出窗口编辑器时出现同样的问题。我发现编辑命令是在模板附加到页面后触发的,所以我可以用编辑中的函数初始化Kendo drop。

因此,举例来说,如果您的模板看起来是这样的:

<script id="myTmpl" type="text/x-kendo-tmpl"> 
    <div id="myDropDown"> 
    </div> 

</script> 

电网将看起来是这样的:

$("#grid").kendoGrid({ 
    ... 
    editable: { 
     mode: "popup", 
     template: kendo.template($("#myTmpl").html()) 
    }, 
    edit: function (e) { 
     $("#myDropDown").kendoDropDownList({ 
       ... 
     }); 
    } 

}); 

这里是一个工作示例:http://jsfiddle.net/ak6hsdo8/2/

5

在模板,包括ToClientTemplate:

<script id="templateId" type="text/x-kendo-template"> 
    <div> 
     @(Html.Kendo().DropDownList() 
     ... 
     .ToClientTemplate() 
    ) 
    </div> 
</script> 
2

我要去尝试,尽管我不会回答这个问题解决您的问题。我的意思是,如果问题是数据需要一段时间才能加载,并且在获取数据之前不想显示DropDownList。我的建议是,直到您没有获取数据,并且在DataSource上使用fetch时,才会创建DropDownList。

例子:

// Define the DataSource 
var ds = new kendo.data.DataSource({ 
    ... 
}); 

// Trigger a read and wait for finishing it 
ds.fetch(function() { 
    $("#myDropDown").kendoDropDownList({ 
     dataSource: ds, 
     ... 
    }); 
}); 

有了这个,你不需要模板,你的HTML是:

<div id="myDropDown"></div> 

你可以在这里看到:http://jsfiddle.net/OnaBai/Ex8Kz/