用户在一人员编辑界面中录入一身份证号,将此身份证号拆分成性别及出生日期后,如何将其在界面中立即刷新?(身份证号与性别、出生日期均 注:datatable 与 winform 在两个类中,DataTable 所在的能能得到具体的控吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不能用AcceptChanges,你可以用EndEdit() HanYZ(飞虎) : 多谢多谢。是一系列绑定控件。 问题:我先说说我的情况: 1.winform程序。 2.form中有一DataSet,form中的控件与DataSet 中的personTable绑定 3.person类中也有一个DataTable TB,其实现与Form中PersonTable的引用 4.先在Person类的TB的列改变事件,录入身份证号,并解析身份证号,分别赋与另两个列:sexNo,birthday 5.窗体上绑定sexNo,与BirthDay的控件如何立即刷新?急切盼复! HanYZ(飞虎): 多谢多谢。 此时用户的编辑还没完毕,可能还有一些非空的字段。 另外我的界面代码与验证代码是分开的。 要实现立即刷新必须要有个东西来通知程序,让程序知道所以必须要有个事件来通知程序你可以试试自定义事件然后把重写datagrid的WndProc来检查 EndEdit()调用后你可以立即调用BeginEdit();继续编辑同时控制不要进行数据验证 yarshray(saga jion): 多谢,多谢。 现在的关键问题实际上就是我能不能通过TB的列来只知道相应绑定的控件名。 注: 我用的是一系列的控件来绑定DataTable的。 to HanYZ(飞虎): 谢谢谢谢: 我刚才试过。 但我form上的增加操作是通过CurrencyManager对象来实现的,它没有beginEdit() 再请指教! 新建一个Form 放上三个TextBox试一下看看,或许可以帮到你private System.Data.DataTable dt;private void Form1_Load(object sender, System.EventArgs e){ this.dt = new DataTable(); dt.Columns.Add("X",typeof(System.String)); dt.Columns.Add("Y",typeof(System.String)); DataRow dr = dt.Rows.Add(new object[]{"1","2"}); this.textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.dt, "X")); this.textBox3.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.dt, "Y")); this.dt.ColumnChanged += new DataColumnChangeEventHandler(RowChange);}private void RowChange(object sender, DataColumnChangeEventArgs e){ if (e.Column.ColumnName == "X") { e.Row["Y"] = e.Row["X"]; e.Row.EndEdit(); }}private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e){ if (e.KeyChar == (char)13) { textBox2.Focus(); }} EndEdit();BeginEdit();这两个方法都用在DataRow上,如上例 HanYZ(飞虎)老兄: 按道理,你的方法是可以的,但是在我这儿却不行。 我做的是三层开发: 主要情况如下: winform层: 一DataSet ,其中含一PersonTable表 businessFacade层: 含一Mediator,其主要作用是将界面上的PersonTable 转移到person类中。 businessRules层: 含一PersonTable表,其对界面上PersonTable进行引用。 比较你的实例,其差别会不会是不同的类中,消息传递不到窗体上? 另外,在我AcceptChanged之后,确显示正常结果,why? 应该是你多层传递的问题,不过多层,如果没有经过WebService的话,可以直接将DataAccess构造的DataTable作为参数传递到WinForm层,你为什么要用新的类去转换呢? 首先、如果你用我上面的测试代码可以看到textBox3的内容改变的话,说明EndEdit方法是可以得到你所要的效果的(我通常先用简单的例子尝试成功,再考虑复杂的),然后再去找出你代码中可能的其他原因 计算机如何实现定时开机 System.Net.Sockets.SocketException: 从来不应失败的系统调用失败了,不知道什么原因~大侠救下,在线等!~ 简单的猜数字游戏 执行错误 求指教 怎样把DBF的数据分级装入到TreeView中,请前辈指点!小弟先感谢了! ~~~session不同步 学习:以下代码如何优化??? 一个算法,给个思路 如何将EXCEL(SQLserver导出的文件)数据导入到Oracle中。。。。 合并数组后排序问题 问个巨弱的问题 .hxs的帮助文件如何浏览? 菜鸟的问题
多谢多谢。是一系列绑定控件。
问题:
我先说说我的情况:
1.winform程序。
2.form中有一DataSet,form中的控件与DataSet 中的personTable绑定
3.person类中也有一个DataTable TB,其实现与Form中PersonTable的引用
4.先在Person类的TB的列改变事件,录入身份证号,并解析身份证号,
分别赋与另两个列:sexNo,birthday
5.窗体上绑定sexNo,与BirthDay的控件如何立即刷新?急切盼复!
多谢多谢。
此时用户的编辑还没完毕,可能还有一些非空的字段。
另外我的界面代码与验证代码是分开的。
同时控制不要进行数据验证
多谢,多谢。
现在的关键问题实际上就是我能不能通过TB的列来只知道相应绑定的
控件名。
注: 我用的是一系列的控件来绑定DataTable的。
谢谢谢谢:
我刚才试过。 但我form上的增加操作是通过CurrencyManager对象来实现的,它没有beginEdit()
再请指教!
{
this.dt = new DataTable();
dt.Columns.Add("X",typeof(System.String));
dt.Columns.Add("Y",typeof(System.String)); DataRow dr = dt.Rows.Add(new object[]{"1","2"});
this.textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.dt, "X"));
this.textBox3.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.dt, "Y"));
this.dt.ColumnChanged += new DataColumnChangeEventHandler(RowChange);
}private void RowChange(object sender, DataColumnChangeEventArgs e)
{
if (e.Column.ColumnName == "X")
{
e.Row["Y"] = e.Row["X"];
e.Row.EndEdit();
}
}private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
textBox2.Focus();
}
}
BeginEdit();
这两个方法都用在DataRow上,如上例
按道理,你的方法是可以的,但是在我这儿却不行。
主要情况如下:
winform层: 一DataSet ,其中含一PersonTable表
businessFacade层: 含一Mediator,其主要作用是将界面上的PersonTable
转移到person类中。
businessRules层: 含一PersonTable表,其对界面上PersonTable进行引用。
比较你的实例,其差别会不会是不同的类中,消息传递不到窗体上?
多层,如果没有经过WebService的话,可以直接将DataAccess构造的DataTable作为参数传递到WinForm层,你为什么要用新的类去转换呢?