做前台功能设计的时候,遇到以下需求:
文本框显示数据库中原来的文本,鼠标点击文本框即变为编辑状态,编辑结束时执行内容存储的后台事件。
显示文本时的样式和与编辑状态时的样式风格也要求有不同。

实验中遇到以下问题:初次页面展现时,如果文本框输入不正确,触发了验证控件。改变文本框的输入正确后,焦点离开事件顺利执行。当再次将文本框的值输入异常时,验证控件没有显示异常,后台事件依然进行了。显然与逻辑不符合了,用验证控件的目的就是如果前台页面验证不满足的情况下,肯定不允许执行后台事件的。

辛苦一番之后,问题解决:
验证控件需设置以下2个属性,让其不做客户端脚本处理,直接调后台事件,但又要显示错误信息
EnableClientScript="False"
Display="Dynamic"

同时在后台TextChanged事件中也应检查页面验证的情况

TextBox设置OnTextChanged后验证控件失效问题的解决    protected void TextBox1_TextChanged(object sender, EventArgs e)

为了让使用效果更加友好,把这些控件又放在了UpdatePanel中。不闪的才是最好的。 TextBox设置OnTextChanged后验证控件失效问题的解决

测试项目
ASP.NET代码:(TextBox的样式变更,放在了皮肤文件中)


文本框皮肤文件:

TextBox设置OnTextChanged后验证控件失效问题的解决<asp:TextBox SkinId="txtchange" onblur="this.style.backgroundColor='#FFFACD';this.style.border='solid 0px';" onfocus="this.style.backgroundColor='#FFFFFF';this.style.border='solid 1px';" runat="server" BackColor="#FFFACD" BorderStyle="Solid" BorderWidth="0px" />


后台代码:

TextBox设置OnTextChanged后验证控件失效问题的解决using System;
TextBox设置OnTextChanged后验证控件失效问题的解决
using System.Data;
TextBox设置OnTextChanged后验证控件失效问题的解决
using System.Configuration;
TextBox设置OnTextChanged后验证控件失效问题的解决
using System.Web;
TextBox设置OnTextChanged后验证控件失效问题的解决
using System.Web.Security;
TextBox设置OnTextChanged后验证控件失效问题的解决
using System.Web.UI;
TextBox设置OnTextChanged后验证控件失效问题的解决
using System.Web.UI.WebControls;
TextBox设置OnTextChanged后验证控件失效问题的解决
using System.Web.UI.WebControls.WebParts;
TextBox设置OnTextChanged后验证控件失效问题的解决
using System.Web.UI.HtmlControls;
TextBox设置OnTextChanged后验证控件失效问题的解决
TextBox设置OnTextChanged后验证控件失效问题的解决
public partial class _Default : System.Web.UI.Page 
}

示例工程下载:
/Files/heekui/TxtChange.rar

相关文章: