我使用的是RadComboBox
。在我的代码中,我将选定的值设置为RadComboBox
,如下所示:
public void RCB_PO_NUM_DataBound(object sender, EventArgs e)
{
var itemRCB_PO_NUM = RCB_PO_NUM.FindItemByText(stringPO_NUM);
itemRCB_PO_NUM.Selected = true;
itemRCB_PO_NUM.Value = stringPO_NUM;
}
字符串
我从我的数据库中选择一个数字列表,并将它们显示在RadComboBox
中。所以我必须使用DataBound
事件来获取数据。
在我将AutomaticLoadOnDemand
属性设置为true之前,这样做效果很好。一旦我这样做,我就可以使用AutomaticLoadOnDemand
属性获得所需的效果,然后失去将RadComboBox
设置为选定值的能力。
我需要能够做到这两点,AutomaticLoadOnDemand
真的帮助加载的项目在RadComboBox
加载真的很快。代码并不一定要在DataBound
事件。我真的不关心它是在什么事件,只要两者都工作。有人能告诉我用什么方法设置AutomaticLoadOnDemand
属性为true,或者我做错了什么吗?
3条答案
按热度按时间fdbelqdn1#
当你使用LoadOnDemand时,你的组合框在用户尝试展开它之前不会被绑定。所以你不能使用DataBound事件。
我不知道你的用例是什么。如果你只想向用户显示选定的项目,那么你可以在Page_Load事件中尝试组合框的Text属性。
字符串
如果你真的需要选定的项目,那么也许你可以添加单一的项目服务器端(对不起,我不能测试它现在)
型
编辑:我做了一些research,似乎ItemDataBound事件应该被正确触发:
注意事项:当您在自动按需加载期间使用DataSourceID或DataSource属性绑定RadComboBox时,ItemDataBound事件将正常触发,这意味着您可以使用它来更改Item的Text和Value属性,以及基于DataItem修改其Attributes集合等。
你可以尝试使用它:
型
但我怀疑的是,在屏幕上,你在评论中提供,我可以看到你的字符串stringPO_NUM有空值。我认为这可能是为什么GetItemByText不返回一个项目给你的原因。
此外,如果您指定为什么需要选择此项目,将很有帮助。
a0zr77ik2#
尝试OnClientLoad事件和控件的JavaScript API来选择一个项目:http://www.telerik.com/help/aspnet-ajax/combobox-client-side-radcombobox.html。将所需的文本存储在隐藏字段或全局JS变量中。
问题是,在请求返回之前,你根本没有这些项目,所以我不确定这是否有效。所以,你可以尝试使用OnClientItemsRequested http://www.telerik.com/help/aspnet-ajax/combobox-onclientitemsrequested.html事件的相同想法-查看是否有一个具有所需文本的项目从服务器返回并选择它。
af7jpaap3#
正如其他人所说的-启用LoadOnDemand后,服务器上没有组合框项。这就是为什么你不能使用FindItemBy* 方法-它们总是返回NULL。
给予更多的信息,你到底想完成什么,我们可以帮助。
我猜你想用你已经拥有的文本预先填充组合框-为此,你最好使用客户端API,例如,在组合加载事件中,你可以调用requestItems(“your text”,true)方法,传递你已经拥有的文本,组合将发出一个appropriate请求,以获得你作为参数传递的文本过滤的项目。