我的表格上有一个telerik rad组合<radC:RadCombo ID="ddl" runat="server" DropdownListHeight="200px"/>
在CS中
在另一个rad组合的“ Selected Index Changed”事件下
var dt = myFunc();
ddl.DataTextField="Name";
ddl.DataValueField="Id";
ddl.DataSource=dt;
ddl.Databind();
ddl.Items.Insert(0,new RadComboBoxItem ("-1","---Choose---"));
请注意:
我有25个来自db的项目,数据表
dt
只有两列,如上所述,Name
和Id
。没有引发任何错误,一切正常,但结果在UI上不可见。有什么见解/帮助吗?
最佳答案
如果您使用的是RadAjaxManager / RadAjaxManagerProxy,是否已确定第一个下拉列表将更新第二个下拉列表:
<telerik:RadAjaxManagerProxy ID="ajaxManager" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="ddlWithOnChangeEvent">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="ddlBeingUpdated" />
</UpdatedControls>
</telerik:AjaxSetting>
...
</AjaxSettings>
</telerik:RadAjaxManagerProxy>
值得一看的下一点是,您应该将AppendDataBoundItems设置为true,这将允许将数据绑定的对象以及手动添加的对象都添加到组合框中。
<telerik:RadComboBox ID="ddlBeingUpdated" runat="server" Height="200px" AppendDataBoundItems="true" />
这里需要指出的一件事是,如果您按原样保留该功能,则每次进行数据绑定时,它只会将新项再次添加到现有列表中。我在这里建议将功能更改为在添加新项目之前清除所有以前的项目。
var dt = myFunc();
ddlBeingUpdated.Items.Clear();
ddlBeingUpdated.DataTextField="Name";
ddlBeingUpdated.DataValueField="Id";
ddlBeingUpdated.DataSource=dt;
ddlBeingUpdated.Databind();
ddl.Items.Insert(0,new RadComboBoxItem ("-1","---Choose---"));
通过查看您的代码,我知道我的版本可能比您的版本更新,但是希望以上示例可以演示如何实现所需的更改。