我有一个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"
}
答案 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";
虽然通常情况下改变你的收藏(后一个例子)并不是一个好主意。