赋值竟然不可靠,超级郁闷

自由建客 2011-07-25 05:42:12
 ComboBox CityEdit, UnitEdit, NameEdit;

public override void Update(DataRow row)
{
// 传进来的 row 在调试器中看到千真万确,没有任何问题
Text = "修改客户信息";
CityEdit.Text = (string)row["City"]; // 过后, CityEdit.Text 竟然未必是 rwo["City"] 的值
UnitEdit.Text = (string)row["Unit"]; // 情况同上
NameEdit.Text = (string)row["Name"]; // 同上
ArrearEdit.Value = (Int64)row["Arrear"];
DisableBtn.Checked = (bool)row["Disable"];
NoteEdit.Text = (string)row["Note"];
Task = TaskType.Update;
ShowDialog();
}
// 最后结果就是赋值未必有效,出来的窗口信息未必是 row 的数据,而是 row 所在表中其它行同列值
// 至于具体哪一列则是随机现象,最后结果就是随机组合,没有规律
/* 超级郁闷 */

有没有人碰到过类似现象?
...全文
114 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
自由建客 2011-07-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cjh200102 的回复:]
没遇到过。
确定每次都这样?
[/Quote]
随机,有时赋值成功,有时则不成功。

[Quote=引用 2 楼 pcqpzq 的回复:]
如果控件有绑定,且绑定不完整或绑定了错误的项,有可能造成上述现象,办法是从设计器中将绑定删除
[/Quote]
没用设计器,我是通过 Enter 事件每次获焦时动态绑定的,绑定源是数组应该不会错误,比如:
protected void BindClientUnit(object s, EventArgs e)
{
var c = EditSet["City"];
var u = EditSet["Unit"];
string bak = u.Text;
u.DataSource = Db.GetClientUnit(c.Text);
u.Text = bak;
}

因为执行绑定的时候 Text 会自动变成绑定源首项,并不是我所希望的,我希望获取焦点后 Text 不变而仅绑定数据源,所以我先备份后恢复。
奇怪的是同样的带着绑定时给 Text 赋值,为什么这里次次都能成功,前面就偶尔成功?
难道仅仅因为这里窗口是已经显示着的,前面是显示之前的?
cjh200102 2011-07-25
  • 打赏
  • 举报
回复
没遇到过。
确定每次都这样?
yanran_hill 2011-07-25
  • 打赏
  • 举报
回复
是不是有twoway绑定?
pcqpzq 2011-07-25
  • 打赏
  • 举报
回复
如果控件有绑定,且绑定不完整或绑定了错误的项,有可能造成上述现象,办法是从设计器中将绑定删除
自由建客 2011-07-25
  • 打赏
  • 举报
回复
赋值之前先将 ComboBox 的 DataSource 打回 null ,就再也没出现过问题了。
求解释!

110,534

社区成员

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

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

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