利用javascript实现类似delphi中数据敏感控件dbtextbox!
来源:互联网 发布:韩国网络爆红拥有65g 编辑:程序博客网 时间:2024/04/27 10:53
我们在编写网络的数据库程序时,经常会遇到一个这样的问题,在数据的编辑页面(注意不在datagrid中编辑数据),经常会放上一些textbox 来输入数据,然后点“保存”或者“返回”按钮,如果用户改变了textbox中的数据,没有保存的直接点击了“返回”按钮的话,就应该提示用户数据没有保 存。这个功能有些像delphi中的数据敏感控件,但delphi中一般编写的都是c/s的软件,到了web上就会大不相同。
那这个功能具体 怎么实现呢,你可能会想到用textbox自带的textchange事件,当textbox中的文本被改变时,通知服务器,然后再点击“返回”时进行相 应的提示。但是,这里存在个重要的问题,如果这样做的话,页面每次都会产生postback,执行的效率会大打折扣,此路不通!
如果 textbox的change能在客户端获得就好了,那就使用javascript吧。这里简单先说一下javascript:由于大部分的win程序员 习惯了原来的开发方式,现在转到web上来开发,可能仍然保持着原来的思维方式,而且对于javascript没有足够的重视,这是不正确的!因为如果你 的web程序要想写好,不懂html、javascript、css这些东西是写不好的。言归正传,现面就来说说这个功能怎么用javascript来实 现。
一、自己封装一个dbtextbox用户控件,从system.web.ui.usercontrol继承下来。在这个控件的load事件中加上如下代码:
private void page_load(object sender, system.eventargs e)
{
// 在此处放置用户代码以初始化页面
//用js写入客户端
string tmpstr =@"<script language=""javascript""> var changed = false; </script>";
response.write(tmpstr);
subtextbox.attributes.add("onkeyup"," changed = true;");
}
这段代码的意思就是,在初始化这个dbtextbox控件时,向客户端写入一个全局变量“changed”,并初始化这个变量为false。然后给 textbox加上 onkeyup 属性,就是说,如果客户在这个textbox中有按键发生,那么就把全局变量“changed”置为true。
二、在封装一个return控件,也从system.web.ui.usercontrol继承,代码如下:
private void page_load(object sender, system.eventargs e)
{
// 在此处放置用户代码以初始化页面
string tmpstr = "您还没有保存记录,确认保存吗?";
subbtn.attributes.add("onclick","var d = '"+tmpstr+"';if (changed == true) {return window.confirm(d)};");
}
上面的代码就是在初始化return控件时,为button增加 onclick属性,当单击按钮时,首先判断全局变量“changed”,如果为真,表示尚未保存,弹出确认对话框。
这里基本上就实现了主题所说的功能,但是还需要进行其他的加工,比如说,进行保存记录,保存记录后将全局变量“changed”置为false等,方法相同,就不再赘述了!
那这个功能具体 怎么实现呢,你可能会想到用textbox自带的textchange事件,当textbox中的文本被改变时,通知服务器,然后再点击“返回”时进行相 应的提示。但是,这里存在个重要的问题,如果这样做的话,页面每次都会产生postback,执行的效率会大打折扣,此路不通!
如果 textbox的change能在客户端获得就好了,那就使用javascript吧。这里简单先说一下javascript:由于大部分的win程序员 习惯了原来的开发方式,现在转到web上来开发,可能仍然保持着原来的思维方式,而且对于javascript没有足够的重视,这是不正确的!因为如果你 的web程序要想写好,不懂html、javascript、css这些东西是写不好的。言归正传,现面就来说说这个功能怎么用javascript来实 现。
一、自己封装一个dbtextbox用户控件,从system.web.ui.usercontrol继承下来。在这个控件的load事件中加上如下代码:
private void page_load(object sender, system.eventargs e)
{
// 在此处放置用户代码以初始化页面
//用js写入客户端
string tmpstr =@"<script language=""javascript""> var changed = false; </script>";
response.write(tmpstr);
subtextbox.attributes.add("onkeyup"," changed = true;");
}
这段代码的意思就是,在初始化这个dbtextbox控件时,向客户端写入一个全局变量“changed”,并初始化这个变量为false。然后给 textbox加上 onkeyup 属性,就是说,如果客户在这个textbox中有按键发生,那么就把全局变量“changed”置为true。
二、在封装一个return控件,也从system.web.ui.usercontrol继承,代码如下:
private void page_load(object sender, system.eventargs e)
{
// 在此处放置用户代码以初始化页面
string tmpstr = "您还没有保存记录,确认保存吗?";
subbtn.attributes.add("onclick","var d = '"+tmpstr+"';if (changed == true) {return window.confirm(d)};");
}
上面的代码就是在初始化return控件时,为button增加 onclick属性,当单击按钮时,首先判断全局变量“changed”,如果为真,表示尚未保存,弹出确认对话框。
这里基本上就实现了主题所说的功能,但是还需要进行其他的加工,比如说,进行保存记录,保存记录后将全局变量“changed”置为false等,方法相同,就不再赘述了!
- 利用JavaScript实现类似Delphi中数据敏感控件DBTextBox!
- 利用javascript实现类似delphi中数据敏感控件dbtextbox!
- 利用JavaScript实现类似Delphi中数据敏感控件DBTextBox!
- Delphi中利用MSCOMM控件进行GPS数据采集
- delphi中利用Indy的TIdFtp控件实现FTP协议
- delphi中利用Indy的TIdFtp控件实现FTP协议
- 用Delphi实现从Excel数据Update(Insert类似)到Oracle数据库表中
- Delphi 制作自定义数据感知控件并装入包(dpk文件)中(与DBText类似的数据感知控件)
- 利用MagicLibrary控件实现类似VsNet平台界面
- 利用MagicLibrary控件实现类似VsNet平台界面
- 利用Menu和MutiView控件实现类似tabControl效果
- javascript怎么实现类似如C++函数中使用静态数据
- Delphi中实现C++/Java类似静态变量的功能
- Delphi中实现C++/Java类似静态变量的功能
- Delphi中实现C++/Java类似静态变量的功能
- Delphi利用MSCOMM控件进行GPS数据采集
- 利用ligerUI实现类似数据列表过滤展示,类似JQuery datatable和某些框架的dataGrid
- Delphi类似QQ皮肤控件,欢迎试用!
- COM in plain C (1 VTable)By Jeff Glatt
- 测试博客文章
- 用javascript仿163邮箱网盘多文件上传用户控件
- 像腾讯QQ和Skype一样定义自己的类似HTTP的Web协议,可以通过URL来触发自己的程序(附源码)
- Baldur's Gate重玩博德之门
- 利用javascript实现类似delphi中数据敏感控件dbtextbox!
- memset函数详细说明
- 利用CSS 的 Clip 属性来创造 多彩文字(Multi Colored Text)
- 在没有Word 2007的情况下如何编辑和打开.docx文件
- break和continue
- 个人简历
- eda江湖传奇
- 缘分
- J2EE连接数据库集合