我有一个与数据源绑定的组合框。在这个组合框中,我必须在索引0处添加一个空白字段。
我写了以下代码来获取记录。
public List<TBASubType> GetSubType(int typ)
{
using (var tr = session.BeginTransaction())
{
try
{
List<TBASubType> lstSubTypes = (from sbt in session.Query<TBASubType>()
where sbt.FType == typ
select sbt).ToList();
tr.Commit();
return lstSubTypes;
}
catch (Exception ex)
{
CusException cex = new CusException(ex);
cex.Write();
return null;
}
}
}
在此之后,它与组合框与数据绑定源绑定,如下面的代码。
M3.CM.BAL.CM CMobj = new M3.CM.BAL.CM(wSession.CreateSession());
lstSubTypes = CMobj.GetSubType(type);
this.tBASubTypeBindingSource.DataSource = lstSubTypes;
答案 0 :(得分:25)
如果您只想最初选择任何内容,可以使用
comboBox1.SelectedIndex=-1;
答案 1 :(得分:12)
因此,当您绑定到DataSource时,您无法修改Items,那么只有添加空行的选项才能修改您的数据源。创建一些空对象并将其添加到数据源。例如。如果你有一些绑定到组合框的Person
个实体的列表:
var people = Builder<Person>.CreateListOfSize(10).Build().ToList();
people.Insert(0, new Person { Name = "" });
comboBox1.DisplayMember = "Name";
comboBox1.DataSource = people;
您可以在班级中定义静态属性Empty
:
public static readonly Person Empty = new Person { Name = "" };
并使用它来插入默认的空白项目:
people.Insert(0, Person.Empty);
这也可以检查所选项目是否为默认项目:
private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
Person person = (Person)comboBox.SelectedItem;
if (person == Person.Empty)
MessageBox.Show("Default item selected!");
}
答案 2 :(得分:0)
cboCustomers.Items.Add(""); // Just add a blank item first
// Then load the records from the database
try
{
OleDbConnection con = new OleDbConnection(strDBConnection);
OleDbCommand cmd = new OleDbCommand();
con.Open();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM Customers";
OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
cboCustomers.Items.Add(dr["Name"]);
}
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}