如何列出RadComboBox为空的项目

时间:2012-10-15 19:35:52

标签: c# telerik radcombobox

我有一个RadComboBox。 我用一个函数填充它,例如{Stack,Over,Flow,StackOverFlow} 当我点击RadCombobox时列出的项目。

我想为空元素提供第一名。

我试着在下面做:

var stack= GetItems(SiteId);
RadComboBox1.Items.Add(new RadComboBoxItem("", "0"));
RadComboBox1.DataSource = stack;  

RadComboBox1.DataTextField = "Name";
RadComboBox1.DataValueField = "Id";
RadComboBox1.DataBind();

RadComboBox1.AllowCustomText = false;

没有变化。仅列出{Stack,Over,Flow,StackOverFlow}。

当我写下面的代码

var stack= GetItems(SiteId);

RadComboBox1.DataSource = stack;  

RadComboBox1.DataTextField = "Name";
RadComboBox1.DataValueField = "Id";
RadComboBox1.DataBind();
RadComboBox1.Items.Add(new RadComboBoxItem("xyz", "0"));
RadComboBox1.AllowCustomText = false;

仅列出{Stack,Over,Flow,StackOverFlow,xyz}。

但我得不到我想要的结果。

设计方面如下。

<telerik:RadComboBox ID="RadComboBox1" runat="server" Width="120px" MarkFirstMatch="true" Filter="Contains"></telerik:RadComboBox>

我该怎么办?

我想列出{" ""Stack""Over""Flow""StackOverFlow"}

2 个答案:

答案 0 :(得分:3)

使用您的第一选择,在致电RadComboBox1.AppendDataBoundItems = true之前添加DataBind()。这意味着在从数据绑定添加项目之前,它不会清除现有项目。如有必要,您需要事先手动清除项目:

RadComboBox1.Items.Clear();
RadComboBox1.ClearSelection();

答案 1 :(得分:1)

当您设置RadComboBox DataSource属性时,它将清除RadComboBox.Items中的所有项,然后遍历设置为它的IEnumerable对象并将它们添加到items集合中。在您的情况下,您可以使用radComboBox.Items.Add()手动添加所有项目。

var stack= GetItems(SiteId);
//Add your empty item. 
RadComboBox1.Items.Add(new RadComboBoxItem("", "0")); 

//Add all the other items
foreach(var item in stack)
{
    RadComboBox1.Items.Add(new RadComboBoxItem(item.Name, item.Id))
}  

RadComboBox1.DataTextField = "Name"; 
RadComboBox1.DataValueField = "Id";

或者您可以先将空项添加到集合中,然后将其绑定到RadComboBox(我假设stack是StackItem的列表)

List<StackItem> stack = GetItems(SiteId);
//Add your empty item. 
stack.Insert(0, new StackItem(){Name = "", Id = 0});

//Set the DataSource
RadComboBox1.DataSource = stack;

RadComboBox1.DataTextField = "Name"; 
RadComboBox1.DataValueField = "Id";

虽然通常情况下改变你的收藏(后一个例子)并不是一个好主意。