在调用tableAdapter的Fill()方法时,如何防止selectedValue改变?

时间:2009-01-08 19:24:28

标签: c# bindingsource tableadapter binding

我已将ListBox绑定到某些数据。

问题是当我调用myTableAdapter.Fill(..)方法时,SelectedValue会更改为列表中第一个项目ID。虽然VS中的“选定值”不受任何限制(见图)。 alt text http://img370.imageshack.us/img370/2548/ss20090108212745qz2.png

请问如何阻止此行为?

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您不应该对每个请求绑定。如果由于某种原因绝对必须绑定每个请求,则必须手动在ListBox上设置SelectedIndex。这是因为Fill方法首先清除列表,然后为获取的数据创建新的列表项。

答案 1 :(得分:1)

我能想到的最简单的方法是将表适配器填充代码更改为:

string preSelected = myDropDownList.SelectedValue;
myTableAdapter.Fill(myDataTable);
myDropDownList.SelectedValue = preSelected;

如果该项目不再存在,您将遇到问题,因此您可能需要添加条件来检查该项目。