请问DevExpress中的ComboBoxEdit怎么绑定数据?我想既可以下拉选择又可以自己输入值

laoguang_2008 2008-05-08 02:03:48
我用这个控件无法绑定到数据表。
如果用lookup那个控件,又无法自己输入值。
...全文
5284 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
laoguang_2008 2008-05-09
  • 打赏
  • 举报
回复
好的,谢谢了,结贴
patrickpan 2008-05-08
  • 打赏
  • 举报
回复
是另外一个概念,是把ComboBoxEdit的值和另外一个数据源绑定,注意:是ComboBoxEdit的值。
laoguang_2008 2008-05-08
  • 打赏
  • 举报
回复
那它的databindings属性是做什么的呀
patrickpan 2008-05-08
  • 打赏
  • 举报
回复
comboboxedit好像没有DataSource直接绑定到数据源。
必须用Items.Add添加项。
laoguang_2008 2008-05-08
  • 打赏
  • 举报
回复
真是非常感谢
我看到comboboxedit不是数据绑定的属性吗?能不能设置属性就可以绑定了呢?不用写代码逐行添加combo.Properties.Items.Add(...........); 。
因为客户自己输入的值并不是很需要存到下拉列表的数据源中。
patrickpan 2008-05-08
  • 打赏
  • 举报
回复
这样子啊:
[Code=C#]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

DataTable dt;

private void Form1_Load(object sender, EventArgs e)
{
dt = new DataTable();
dt.Columns.Add("Test", typeof(string));

DataRow dr = dt.NewRow();
dr[0] = "Hello,World";
dt.Rows.Add(dr);

lookUpEdit1.Properties.DataSource = dt;
}

private void lookUpEdit1_ProcessNewValue(object sender, DevExpress.XtraEditors.Controls.ProcessNewValueEventArgs e)
{
if (MessageBox.Show(this, "Add the '" + e.DisplayValue.ToString() + "' entry to the list?", "Confirm", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
//(lookUpEdit1.Properties.DataSource as ContactList).Add(new Contact(e.DisplayValue.ToString()));
DataRow dr = dt.NewRow();
dr[0] = e.DisplayValue.ToString();
(lookUpEdit1.Properties.DataSource as DataTable).Rows.Add(dr);
e.Handled = true;
}

}
}
[/Code]
laoguang_2008 2008-05-08
  • 打赏
  • 举报
回复
如果直接用DataSet应该怎么做呢?
patrickpan 2008-05-08
  • 打赏
  • 举报
回复
DataSource 用的数据源是泛型:
public class Contact {
private string name;
public Contact(string _name) {
name = _name;
}
public string Name {
get {return name;}
set {name = value;}
}

List<Contact> ContactList = new List<Contact>();
ContactList.Add("test");
lookUpEdit1.Properties.DataSource = ContactList;
这样应该明白了,也可以不用泛型,直接用DataSet。
TLJewel 2008-05-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 laoguang_2008 的回复:]
(lookUpEdit1.Properties.DataSource as ContactList).Add(
new Contact(e.DisplayValue.ToString()));
这一段不是很明白。


[/Quote]


好像是这样,(lookUpEdit1.Properties.DataSource as ContactList).Add 这个我明白,下面的就是很懂了,应该是将数据绑定到了lookUpEdit1,绑定的是这条数据 :e.DisplayValue.ToString()。
没用过这个控件
laoguang_2008 2008-05-08
  • 打赏
  • 举报
回复
(lookUpEdit1.Properties.DataSource as ContactList).Add(
new Contact(e.DisplayValue.ToString()));
这一段不是很明白。

laoguang_2008 2008-05-08
  • 打赏
  • 举报
回复
patrickpan您好!有麻烦你了呵呵
ContactList是什么呢?
Scarroot 2008-05-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 patrickpan 的回复:]
[Quote=PatrickPan]
1. lookup也可以輸入值的,輸入后,如果在lookup中找不到,添加到lookup數據源中,請參照幫助文檔。
2. 如果用ComboBoxEdit控件,逐行添加combo.Properties.Items.Add(...........);
ComboBoxEdit combo = new ComboBoxEdit();
ComboBoxItemCollection coll = combo.Properties.Items;
coll.BeginUpdate();
try {
coll.Add(new PersonInfo("Sven", "Petersen"));
coll.Add(new…
[/Quote]

[Quote=引用 3 楼 patrickpan 的回复:]
lookUpEdit中添加一個新值,在ProcessNewValue方法中添加如下代碼:

C# code
private void lookUpEdit1_ProcessNewValue(object sender, ProcessNewValueEventArgs e) {
if (MessageBox.Show(this, "Add the '" + e.DisplayValue.ToString() +
"' entry to the list?",
"Confirm", MessageBoxButtons.YesNo) == DialogResult.Yes) {
(lookUpEdit1.Properties.DataSource as ContactList).Add…
[/Quote]


很好.
TLJewel 2008-05-08
  • 打赏
  • 举报
回复
到这个控件的属性里就可以设置了~!
直接绑定到该控件,然后在属性里设置它可编辑就可以了
patrickpan 2008-05-08
  • 打赏
  • 举报
回复
lookUpEdit中添加一個新值,在ProcessNewValue方法中添加如下代碼:
[Code=C#]
private void lookUpEdit1_ProcessNewValue(object sender, ProcessNewValueEventArgs e) {
if (MessageBox.Show(this, "Add the '" + e.DisplayValue.ToString() +
"' entry to the list?",
"Confirm", MessageBoxButtons.YesNo) == DialogResult.Yes) {
(lookUpEdit1.Properties.DataSource as ContactList).Add(
new Contact(e.DisplayValue.ToString()));
e.Handled = true;
}
}

public class Contact {
private string name;
public Contact(string _name) {
name = _name;
}
[/Code]

public string Name {
get {return name;}
set {name = value;}
}

[/Quote]
patrickpan 2008-05-08
  • 打赏
  • 举报
回复
[Quote=PatrickPan]
1. lookup也可以輸入值的,輸入后,如果在lookup中找不到,添加到lookup數據源中,請參照幫助文檔。
2. 如果用ComboBoxEdit控件,逐行添加combo.Properties.Items.Add(...........);
ComboBoxEdit combo = new ComboBoxEdit();
ComboBoxItemCollection coll = combo.Properties.Items;
coll.BeginUpdate();
try {
coll.Add(new PersonInfo("Sven", "Petersen"));
coll.Add(new PersonInfo("Cheryl", "Saylor"));
coll.Add(new PersonInfo("Dirk", "Luchte"));
}
finally {
coll.EndUpdate();
}
combo.SelectedIndex = -1;

Controls.Add(combo);

[/Quote
yagebu1983 2008-05-08
  • 打赏
  • 举报
回复
没用过这种控件!!
帮你顶!!

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧