我正在使用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,或者我做错了什么? 最佳答案
当您使用LoadOnDemand时,您的组合框不会绑定(bind),直到用户尝试将其扩展。因此,您不能使用DataBound事件。
我不确定您的用例是什么。如果您只想向用户显示所选项目,则可以尝试在Page_Load事件中使用组合框的Text属性。
protected void Page_Load(object sender, EventArgs e)
{
itemRCB_PO_NUM.Text = stringPO_NUM;
}
如果您确实需要选定的项目,那么也许可以添加单个项目服务器端(对不起,我现在无法对其进行测试)
protected void Page_Load(object sender, EventArgs e)
{
itemRCB_PO_NUM.Items.Add(new RadComboBoxItem()
{
Value = stringPO_NUM,
Text= stringPO_NUM,
Selected = true
})
}
编辑:
我做了一些research,似乎应该正确触发ItemDataBound事件:
因此,您可以尝试使用它:
protected void RadComboBox1_ItemDataBound(object o, RadComboBoxItemEventArgs e)
{
DataRowView dataSourceRow = (DataRowView) e.Item.DataItem;
if(e.Item.Text == stringPO_NUM)
{
e.Item.Selected = true;
e.Item.Value = stringPO_NUM;
}
}
但是对我来说,可疑的是您在注释中提供的屏幕上,我可以看到您的字符串stringPO_NUM具有空值。我认为这可能是GetItemByText不向您返回商品的原因。
如果您指定为什么需要选择此项目,这也将很有帮助。