BindData()
{
this.comboBox.DisplayMember = "name";
this.comboBox.ValueMember = "id";
this.comboBox.DataSource = dbDataContext.Products;
}
然后当我在其它地方在Products中再插入一条数据的时候,重新调用BindData(),发现comboBox里面的选择项没有被更新,请问应该如何操作使comboBox会即时根据products里面的数据项更新?
29 个解决方案
#1
dbDataContext.Products已经是更新过的数据了吗?
#2
帮顶一下
#3
up
#4
ding
#5
先确定你的数据虽然更新了 但是dbDataContext.Products更新了没有。
#6
可以设置断点跟踪一下,在你在其它地方在Products中再插入一条数据的时候,看看是否插进去了,
再次调用BINDDATA的时候,是否Products中的值已经传了过来!
再次调用BINDDATA的时候,是否Products中的值已经传了过来!
#7
绑定以后要清空了再重新绑定
#8
v
#9
同意楼上的方法,加断点,看看products里面的数据是否加入,如果已经加入,comboBox仍然没有更新的话,可以尝试加this.refresh();语句让控件更新。我以前遇到这样的问题是这样子解决的 ,不知道是否试用你的程序~
#10
dbDataContext.Products有没有更新数据?
#11
BindData()
{
this.comboBox.clear();
this.comboBox.DisplayMember = "name";
this.comboBox.ValueMember = "id";
//重新获取dbDataContext.Products
this.comboBox.DataSource = dbDataContext.Products;
}
这样试下。
{
this.comboBox.clear();
this.comboBox.DisplayMember = "name";
this.comboBox.ValueMember = "id";
//重新获取dbDataContext.Products
this.comboBox.DataSource = dbDataContext.Products;
}
这样试下。
#12
UP~
#13
对,先this.combBox.clear()一下.
#14
BindData()
{
this.comboBox.clear();
this.comboBox.DisplayMember = "name";
this.comboBox.ValueMember = "id";
//重新获取dbDataContext.Products
this.comboBox.DataSource = dbDataContext.Products;
}
BindData()
这个应该还有重新调用一下吧。最好还是自己写个,这样直接绑定,过程不能很好的控制
{
this.comboBox.clear();
this.comboBox.DisplayMember = "name";
this.comboBox.ValueMember = "id";
//重新获取dbDataContext.Products
this.comboBox.DataSource = dbDataContext.Products;
}
BindData()
这个应该还有重新调用一下吧。最好还是自己写个,这样直接绑定,过程不能很好的控制
#15
在combobox的Leave事件中加入EndEdit()试一下。
#16
看调用的时候dbDataContext.Products是否已经更新了
#17
clear之后再绑定数据源~
#18
谢谢楼上各位,请各位大侠指教。
尝试了楼上的各种方法,还是没有解决问题.
1. dbDataContext.Products已经是更新过的数据了吗?
是的,在其它地方添加时就更新了。为了确保,对this.comboBox.DataSource = dbDataContext.Products; 加了个断点,发现确实是更新后的数据。
2. 尝试了如下代码,还是不行。
this.comboBox.DataSource = null;
this.comboBox.DisplayMember = "name";
this.comboBox.ValueMember = "id";
this.comboBox.DataSource = dbDataContext.Products;
this.comboBox.Refresh();
3. 发现comboBox没有clear方法,如果用comboBox.Items.Clear()方法,在运行时会有ArgumentException, "Items collection cannot be modified when the DataSource property is set."
尝试了楼上的各种方法,还是没有解决问题.
1. dbDataContext.Products已经是更新过的数据了吗?
是的,在其它地方添加时就更新了。为了确保,对this.comboBox.DataSource = dbDataContext.Products; 加了个断点,发现确实是更新后的数据。
2. 尝试了如下代码,还是不行。
this.comboBox.DataSource = null;
this.comboBox.DisplayMember = "name";
this.comboBox.ValueMember = "id";
this.comboBox.DataSource = dbDataContext.Products;
this.comboBox.Refresh();
3. 发现comboBox没有clear方法,如果用comboBox.Items.Clear()方法,在运行时会有ArgumentException, "Items collection cannot be modified when the DataSource property is set."
#19
顶
#20
把问题描述的更简单一点,我要通过ComboBox显示一个Table<Product>中的一列,当在ComboBox中选择时,其SelectedValue是另一列的值。
现在的问题是当Product中的内容改变时,ComboBox中的内容不能得到及时改变。
请各位大侠指教,谢谢。
现在的问题是当Product中的内容改变时,ComboBox中的内容不能得到及时改变。
请各位大侠指教,谢谢。
#21
改成这样试试
BindData()
{
this.comboBox.DataSource = dbDataContext.Products;
this.comboBox.DisplayMember = "name";
this.comboBox.ValueMember = "id";
}
#22
多谢楼上,还是不行。
#23
那就this.comboBox1.Update();一下然后再绑定
#24
你绑定的有问题,我尝试了一下,显示很正常。
this.comboBox1.DataSource = null;
this.comboBox1.DataSource = testDataSet.Tables[0];
this.comboBox1.DisplayMember = "qq";
this.comboBox1.ValueMember = "ww";
#25
#26
不好意思,搞错掉了。因为不能传图片,所以不能看到刚才我做的例子,
我是直接在数据源项上添加一条数据的,什么都不用改,combox1就直接更新了。
就是把数据源里的几列直接拖放到窗体里,然后在里面添加,你可以尝试一下。
但是如果要是手动在数据表里添加一条记录的话,就不行了。重新绑定也不行。
除非重新加载数据源。如是:
我是直接在数据源项上添加一条数据的,什么都不用改,combox1就直接更新了。
就是把数据源里的几列直接拖放到窗体里,然后在里面添加,你可以尝试一下。
但是如果要是手动在数据表里添加一条记录的话,就不行了。重新绑定也不行。
除非重新加载数据源。如是:
private void button1_Click(object sender, EventArgs e)
{
DataSet ds = new DataSet();
string strConn = string.Empty;
strConn = @"Data Source = .\SQLExpress;" + "Initial Catalog=test;Integrated Security=true;";
string strSQL = string.Empty;
strSQL = "select * from ff";
SqlDataAdapter da = new SqlDataAdapter(strSQL, strConn);
da.Fill(ds);
DataTableReader dtr = ds.CreateDataReader();
this.testDataSet.Clear();
this.testDataSet.Load(dtr, LoadOption.Upsert, "ff");
this.comboBox1.DataSource = null;
this.comboBox1.DataSource = testDataSet.Tables[0];
this.comboBox1.DisplayMember = "qq";
this.comboBox1.ValueMember = "ww";
}
#27
已经读到本地了再绑定的,貌似不能更新吧.除非再重新读一下表......
#28
up
#29
谢谢各位的帮助,虽然我最终还是没有成功,所以我打算放弃用绑定。直接在Items里面加内容,然后根据SelectedIndex定位到具体对象...
给分结贴
给分结贴
#1
dbDataContext.Products已经是更新过的数据了吗?
#2
帮顶一下
#3
up
#4
ding
#5
先确定你的数据虽然更新了 但是dbDataContext.Products更新了没有。
#6
可以设置断点跟踪一下,在你在其它地方在Products中再插入一条数据的时候,看看是否插进去了,
再次调用BINDDATA的时候,是否Products中的值已经传了过来!
再次调用BINDDATA的时候,是否Products中的值已经传了过来!
#7
绑定以后要清空了再重新绑定
#8
v
#9
同意楼上的方法,加断点,看看products里面的数据是否加入,如果已经加入,comboBox仍然没有更新的话,可以尝试加this.refresh();语句让控件更新。我以前遇到这样的问题是这样子解决的 ,不知道是否试用你的程序~
#10
dbDataContext.Products有没有更新数据?
#11
BindData()
{
this.comboBox.clear();
this.comboBox.DisplayMember = "name";
this.comboBox.ValueMember = "id";
//重新获取dbDataContext.Products
this.comboBox.DataSource = dbDataContext.Products;
}
这样试下。
{
this.comboBox.clear();
this.comboBox.DisplayMember = "name";
this.comboBox.ValueMember = "id";
//重新获取dbDataContext.Products
this.comboBox.DataSource = dbDataContext.Products;
}
这样试下。
#12
UP~
#13
对,先this.combBox.clear()一下.
#14
BindData()
{
this.comboBox.clear();
this.comboBox.DisplayMember = "name";
this.comboBox.ValueMember = "id";
//重新获取dbDataContext.Products
this.comboBox.DataSource = dbDataContext.Products;
}
BindData()
这个应该还有重新调用一下吧。最好还是自己写个,这样直接绑定,过程不能很好的控制
{
this.comboBox.clear();
this.comboBox.DisplayMember = "name";
this.comboBox.ValueMember = "id";
//重新获取dbDataContext.Products
this.comboBox.DataSource = dbDataContext.Products;
}
BindData()
这个应该还有重新调用一下吧。最好还是自己写个,这样直接绑定,过程不能很好的控制
#15
在combobox的Leave事件中加入EndEdit()试一下。
#16
看调用的时候dbDataContext.Products是否已经更新了
#17
clear之后再绑定数据源~
#18
谢谢楼上各位,请各位大侠指教。
尝试了楼上的各种方法,还是没有解决问题.
1. dbDataContext.Products已经是更新过的数据了吗?
是的,在其它地方添加时就更新了。为了确保,对this.comboBox.DataSource = dbDataContext.Products; 加了个断点,发现确实是更新后的数据。
2. 尝试了如下代码,还是不行。
this.comboBox.DataSource = null;
this.comboBox.DisplayMember = "name";
this.comboBox.ValueMember = "id";
this.comboBox.DataSource = dbDataContext.Products;
this.comboBox.Refresh();
3. 发现comboBox没有clear方法,如果用comboBox.Items.Clear()方法,在运行时会有ArgumentException, "Items collection cannot be modified when the DataSource property is set."
尝试了楼上的各种方法,还是没有解决问题.
1. dbDataContext.Products已经是更新过的数据了吗?
是的,在其它地方添加时就更新了。为了确保,对this.comboBox.DataSource = dbDataContext.Products; 加了个断点,发现确实是更新后的数据。
2. 尝试了如下代码,还是不行。
this.comboBox.DataSource = null;
this.comboBox.DisplayMember = "name";
this.comboBox.ValueMember = "id";
this.comboBox.DataSource = dbDataContext.Products;
this.comboBox.Refresh();
3. 发现comboBox没有clear方法,如果用comboBox.Items.Clear()方法,在运行时会有ArgumentException, "Items collection cannot be modified when the DataSource property is set."
#19
顶
#20
把问题描述的更简单一点,我要通过ComboBox显示一个Table<Product>中的一列,当在ComboBox中选择时,其SelectedValue是另一列的值。
现在的问题是当Product中的内容改变时,ComboBox中的内容不能得到及时改变。
请各位大侠指教,谢谢。
现在的问题是当Product中的内容改变时,ComboBox中的内容不能得到及时改变。
请各位大侠指教,谢谢。
#21
改成这样试试
BindData()
{
this.comboBox.DataSource = dbDataContext.Products;
this.comboBox.DisplayMember = "name";
this.comboBox.ValueMember = "id";
}
#22
多谢楼上,还是不行。
#23
那就this.comboBox1.Update();一下然后再绑定
#24
你绑定的有问题,我尝试了一下,显示很正常。
this.comboBox1.DataSource = null;
this.comboBox1.DataSource = testDataSet.Tables[0];
this.comboBox1.DisplayMember = "qq";
this.comboBox1.ValueMember = "ww";
#25
#26
不好意思,搞错掉了。因为不能传图片,所以不能看到刚才我做的例子,
我是直接在数据源项上添加一条数据的,什么都不用改,combox1就直接更新了。
就是把数据源里的几列直接拖放到窗体里,然后在里面添加,你可以尝试一下。
但是如果要是手动在数据表里添加一条记录的话,就不行了。重新绑定也不行。
除非重新加载数据源。如是:
我是直接在数据源项上添加一条数据的,什么都不用改,combox1就直接更新了。
就是把数据源里的几列直接拖放到窗体里,然后在里面添加,你可以尝试一下。
但是如果要是手动在数据表里添加一条记录的话,就不行了。重新绑定也不行。
除非重新加载数据源。如是:
private void button1_Click(object sender, EventArgs e)
{
DataSet ds = new DataSet();
string strConn = string.Empty;
strConn = @"Data Source = .\SQLExpress;" + "Initial Catalog=test;Integrated Security=true;";
string strSQL = string.Empty;
strSQL = "select * from ff";
SqlDataAdapter da = new SqlDataAdapter(strSQL, strConn);
da.Fill(ds);
DataTableReader dtr = ds.CreateDataReader();
this.testDataSet.Clear();
this.testDataSet.Load(dtr, LoadOption.Upsert, "ff");
this.comboBox1.DataSource = null;
this.comboBox1.DataSource = testDataSet.Tables[0];
this.comboBox1.DisplayMember = "qq";
this.comboBox1.ValueMember = "ww";
}
#27
已经读到本地了再绑定的,貌似不能更新吧.除非再重新读一下表......
#28
up
#29
谢谢各位的帮助,虽然我最终还是没有成功,所以我打算放弃用绑定。直接在Items里面加内容,然后根据SelectedIndex定位到具体对象...
给分结贴
给分结贴