0

我有一个 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"}

4

2 回答 2

3

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

RadComboBox1.Items.Clear();
RadComboBox1.ClearSelection();
于 2012-10-15T20:09:19.987 回答
1

当您设置 RadComboBox DataSource 属性时,它将清除 RadComboBox.Items 中的所有项目,然后遍历设置给它的 IEnumerable 对象并将它们添加到项目集合中。在您的情况下,您可以使用 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(我假设堆栈是 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";

尽管通常在这种情况下更改您的集合(后一个示例)并不是一个好主意。

于 2012-10-15T20:13:07.050 回答