to ly210501076: 我需要用ComboBox的那套来进行数据绑定,因为显示的值是显示的值,我选择后获取的值是显示的值所对应的数据,就比如我SQL语句查询出来的有两列(select id,value from table),控件显示的是value,但是我选择某一项的时候,获取的是value对应的id,所以是要ComboBox控件的那种设置方式。
对了ComboBoxEdit不能通过DataBindings的方法来实现数据的绑定,因为ComboBoxEdit不支持这种方式的绑定数据,关于ComboBoxEdit绑定数据老外很多人也给出了方法,总结一下,大都是通过 ComboBoxEdit.Properties.Items.Add(object objData)的方法来绑定数据的。 这种方式绑定数据的话,你只需要把objData取出,如果是DataTable类型可以通过 foreach (DataRow dr in dt.Rows) { cmbTest.Properties.Items.Add(dr); }如果要是的绑定的数据显示某个字段,你可以对dr中实现Override ToString()的重载。
其实dev也有这两个属性,只不过好像不支持智能感应, 你直接写出来,编译是可以通过的
它是绑定对象的,也就是楼上所说,其实它显示的是它的ToString()内容。
to showjancn: 你的意思是不是说如果我要想像ComboBox一样设置那种键值对的方式,需要我自己去定义一个类似ListItem那样的类,然后实例化对象去add到控件里?
向ComboBoxEdit中添加button的实例也是一种办法! 例如一下: this.comboBoxEdit1.EditValue = "Extended Price"; this.comboBoxEdit1.Location = new System.Drawing.Point(138, 10); this.comboBoxEdit1.Name = "comboBoxEdit1"; this.comboBoxEdit1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)}); this.comboBoxEdit1.Properties.Items.AddRange(new object[] { "Extended Price", "Extended Unit Price", "Full Price"}); this.comboBoxEdit1.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor; this.comboBoxEdit1.Size = new System.Drawing.Size(197, 22); this.comboBoxEdit1.TabIndex = 3;
你重新整理一下思绪,你看你说你的数据是通过(select id,value from table)查询出来,这样数据可能有很多条数据对吧。 你可以建一个TableEntity实体类来存放一条记录,而TableEntityList则是TableEntity的集合; public class TableEntity { private int _Id = 0; private string _Value = ""; public int Id { get { return this._Id; } set { this._Id = value; } } public string Value { get { return this._Value; } set { this._Value = value; } } public override string ToString() { return this.Value; } } public class TableEntityList : ICollection { List<TableEntity> tbEntityList = new List<TableEntity>(); //...... }这样在给ComboBoxEdit绑定数据时,就通过 foreach (TableEntity tbEntity in tbEntityList) { ComboBoxEdit.Properties.Items.Add(tbEntity); }这样在你通过ComboBoxEdit的SelectedIndexChanged事件获取SelectedItem可以转化成TableEntity实体,这样就可以得到你想要的Id这个属性了。
如果是先绑定数据,干脆,不要用ComboBox那套。你可以换个想法来绑定数据啊。
ComboBoxEdit有个属性Properties.Items.Add(),你把你需要绑定的数据加载Add()里面就可以了。
如果你真的想用ComboBox那套来绑定数据,对应的是我找找,忘记了。
我需要用ComboBox的那套来进行数据绑定,因为显示的值是显示的值,我选择后获取的值是显示的值所对应的数据,就比如我SQL语句查询出来的有两列(select id,value from table),控件显示的是value,但是我选择某一项的时候,获取的是value对应的id,所以是要ComboBox控件的那种设置方式。
ComboBoxEdit.Properties.Items.Add(object objData)的方法来绑定数据的。
这种方式绑定数据的话,你只需要把objData取出,如果是DataTable类型可以通过 foreach (DataRow dr in dt.Rows)
{
cmbTest.Properties.Items.Add(dr);
}如果要是的绑定的数据显示某个字段,你可以对dr中实现Override ToString()的重载。
其实dev也有这两个属性,只不过好像不支持智能感应, 你直接写出来,编译是可以通过的
你的意思是不是说如果我要想像ComboBox一样设置那种键值对的方式,需要我自己去定义一个类似ListItem那样的类,然后实例化对象去add到控件里?
例如一下: this.comboBoxEdit1.EditValue = "Extended Price";
this.comboBoxEdit1.Location = new System.Drawing.Point(138, 10);
this.comboBoxEdit1.Name = "comboBoxEdit1";
this.comboBoxEdit1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
this.comboBoxEdit1.Properties.Items.AddRange(new object[] {
"Extended Price",
"Extended Unit Price",
"Full Price"});
this.comboBoxEdit1.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
this.comboBoxEdit1.Size = new System.Drawing.Size(197, 22);
this.comboBoxEdit1.TabIndex = 3;
你可以建一个TableEntity实体类来存放一条记录,而TableEntityList则是TableEntity的集合; public class TableEntity
{
private int _Id = 0;
private string _Value = ""; public int Id
{
get { return this._Id; }
set { this._Id = value; }
}
public string Value
{
get { return this._Value; }
set { this._Value = value; }
} public override string ToString()
{
return this.Value;
}
}
public class TableEntityList : ICollection
{
List<TableEntity> tbEntityList = new List<TableEntity>();
//......
}这样在给ComboBoxEdit绑定数据时,就通过 foreach (TableEntity tbEntity in tbEntityList)
{
ComboBoxEdit.Properties.Items.Add(tbEntity);
}这样在你通过ComboBoxEdit的SelectedIndexChanged事件获取SelectedItem可以转化成TableEntity实体,这样就可以得到你想要的Id这个属性了。