c# – 如何以编程方式将RadComboBox与数据源设置为AutomaticLoadOnDemand

前端之家收集整理的这篇文章主要介绍了c# – 如何以编程方式将RadComboBox与数据源设置为AutomaticLoadOnDemand前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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时,您的组合框不会被绑定,直到用户尝试展开它.所以你不能使用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事件:

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没有向您返回项目的原因.

如果您要指定为什么需要选择此项,那么它也会有所帮助.

猜你在找的C#相关文章