CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

用户在一人员编辑界面中录入一身份证号,将此身份证号拆分成性别及出生日期后,如何将其在界面中立即刷新?(身份证号与性别、出生日期均

楼主success_victory(success_victory)2002-12-23 19:10:46 在 .NET技术 / C# 提问

用户在一人员编辑界面中录入一身份证号,将此身份证号拆分成性别及出生日期后,如何将其在界面中立即刷新?(身份证号与性别、出生日期均在一个DataTable中,不能用AcceptChanges,因为我还没有更新到数据库) 问题点数:100、回复次数:24Top

1 楼success_victory(success_victory)回复于 2002-12-23 19:16:32 得分 0

唉!!!  
  如有答案,马上结贴!  
  (在线等待!!!!!!!!!!!)Top

2 楼success_victory(success_victory)回复于 2002-12-23 19:24:28 得分 0

?Top

3 楼HanYZ(飞虎)回复于 2002-12-23 19:29:46 得分 0

你在Grid中输入呢还是?Top

4 楼success_victory(success_victory)回复于 2002-12-23 19:33:26 得分 0

注:  
  datatable   与   winform   在两个类中,DataTable   所在的能能得到具体的控吗?Top

5 楼HanYZ(飞虎)回复于 2002-12-23 19:37:09 得分 0

不能用AcceptChanges,你可以用EndEdit()Top

6 楼success_victory(success_victory)回复于 2002-12-23 19:43:00 得分 0

HanYZ(飞虎)   :  
        多谢多谢。是一系列绑定控件。  
        问题:  
  我先说说我的情况:  
        1.winform程序。  
        2.form中有一DataSet,form中的控件与DataSet   中的personTable绑定  
        3.person类中也有一个DataTable   TB,其实现与Form中PersonTable的引用  
        4.先在Person类的TB的列改变事件,录入身份证号,并解析身份证号,  
  分别赋与另两个列:sexNo,birthday  
        5.窗体上绑定sexNo,与BirthDay的控件如何立即刷新?  
   
  急切盼复!  
   
  Top

7 楼success_victory(success_victory)回复于 2002-12-23 19:50:47 得分 0

HanYZ(飞虎):  
          多谢多谢。  
          此时用户的编辑还没完毕,可能还有一些非空的字段。  
          另外我的界面代码与验证代码是分开的。Top

8 楼yarshray(saga jion(心飘情落))回复于 2002-12-23 19:55:26 得分 0

要实现立即刷新必须要有个东西来通知程序,让程序知道  
   
  所以必须要有个事件来通知程序你可以试试自定义事件  
   
  然后把重写datagrid的WndProc来检查Top

9 楼HanYZ(飞虎)回复于 2002-12-23 19:56:31 得分 100

EndEdit()调用后你可以立即调用BeginEdit();继续编辑  
  同时控制不要进行数据验证Top

10 楼success_victory(success_victory)回复于 2002-12-23 19:58:52 得分 0

yarshray(saga   jion):  
            多谢,多谢。  
            现在的关键问题实际上就是我能不能通过TB的列来只知道相应绑定的  
  控件名。  
            注:   我用的是一系列的控件来绑定DataTable的。  
  Top

11 楼success_victory(success_victory)回复于 2002-12-23 20:17:55 得分 0

to   HanYZ(飞虎):  
        谢谢谢谢:  
        我刚才试过。   但我form上的增加操作是通过CurrencyManager对象来实现的,它没有beginEdit()  
        再请指教!  
   
  Top

12 楼HanYZ(飞虎)回复于 2002-12-23 20:22:31 得分 0

新建一个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();  
  }  
  }  
  Top

13 楼HanYZ(飞虎)回复于 2002-12-23 20:23:47 得分 0

改变TextBox1的值,回车Top

14 楼success_victory(success_victory)回复于 2002-12-23 20:23:56 得分 0

谢谢你:  
  Top

15 楼success_victory(success_victory)回复于 2002-12-23 20:24:53 得分 0

我试试  
  Top

16 楼HanYZ(飞虎)回复于 2002-12-23 20:27:02 得分 0

EndEdit();  
  BeginEdit();  
  这两个方法都用在DataRow上,如上例  
   
  Top

17 楼success_victory(success_victory)回复于 2002-12-23 20:44:05 得分 0

HanYZ(飞虎)老兄:  
        按道理,你的方法是可以的,但是在我这儿却不行。  
  Top

18 楼success_victory(success_victory)回复于 2002-12-23 20:49:15 得分 0

我做的是三层开发:  
        主要情况如下:  
        winform层:                 一DataSet   ,其中含一PersonTable表  
        businessFacade层:   含一Mediator,其主要作用是将界面上的PersonTable  
                                            转移到person类中。  
        businessRules层:     含一PersonTable表,其对界面上PersonTable进行引用。  
        比较你的实例,其差别会不会是不同的类中,消息传递不到窗体上?Top

19 楼success_victory(success_victory)回复于 2002-12-23 20:53:15 得分 0

另外,在我AcceptChanged之后,确显示正常结果,why?Top

20 楼HanYZ(飞虎)回复于 2002-12-23 20:55:59 得分 0

应该是你多层传递的问题,不过  
  多层,如果没有经过WebService的话,可以直接将DataAccess构造的DataTable作为参数传递到WinForm层,你为什么要用新的类去转换呢?Top

21 楼success_victory(success_victory)回复于 2002-12-23 21:00:07 得分 0

1.   主要是考虑到界面代码与实现代码分离  
  2.   别的也就是一些oo的原因了Top

22 楼HanYZ(飞虎)回复于 2002-12-23 21:05:52 得分 0

首先、如果你用我上面的测试代码可以看到textBox3的内容改变的话,说明EndEdit方法是可以得到你所要的效果的(我通常先用简单的例子尝试成功,再考虑复杂的),然后再去找出你代码中可能的其他原因Top

23 楼success_victory(success_victory)回复于 2002-12-23 21:07:24 得分 0

谢谢了!  
      你的QQ号?在哪儿?  
  Top

24 楼success_victory(success_victory)回复于 2002-12-23 21:10:42 得分 0

还没吃饭。分我明天给你,多谢多谢Top

相关问题

  • 界面刷新的问题
  • 界面的刷新问题
  • wince下的界面刷新
  • 界面刷新的问题
  • 在cs代码中 怎样根据出生日期计算出他的年龄? 出生日期是DateTime的.???????????????????????????????????????????????????????????????
  • 如何刷新程序界面
  • 怎样刷新整个程序界面
  • 如何刷新Windows的整个界面?
  • 关于界面刷新的问题?
  • 关于界面刷新的问题

关键词

  • 界面
  • 录入
  • 代码
  • 控件
  • winform
  • 用户
  • 出生日期
  • persontable
  • 身份证号
  • 性别

得分解答快速导航

  • 帖主:success_victory
  • HanYZ

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo