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,或者我做错了什么?
解决方法
我不确定你的用例是什么.如果您只想向用户显示所选项目,则可以在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事件:
Note: When you use the DataSourceID or DataSource properties to bind RadComboBox during automatic Load On Demand the ItemDataBound event fires normally,which means that you can use it to change the Item’s Text and Value properties as well as modify its Attributes collection based on the DataItem,etc.
所以你可以尝试使用它:
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没有向您返回项目的原因.
如果您要指定为什么需要选择此项,那么它也会有所帮助.