<asp:TextBox ID="Df_Days" runat="server" Width="50px" OnTextChanged="Df_Days_TextChanged" AutoPostBack="True"></asp:TextBox>天
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="Df_Days"
Display="Dynamic" ErrorMessage="请输入数字!" Style="z-index: 132; left: 159px" ValidationExpression="^\d+(\d+)?$"></asp:RegularExpressionValidator>
后台代码:
protected void Df_Days_TextChanged(object sender, EventArgs e)
{
//if (Time1.Value == string.Empty)
//{
// DfkjToolKit.Web.MessageBox.Show("开始时间不能为空!");
// return;
//}
RegularExpressionValidator1.Validate();
if (RegularExpressionValidator1.IsValid)
{
int days = Convert.ToInt32(Df_Days.Text.Trim());
string endtime = string.Empty;
// string endtime = Convert.ToString(EndTime(days));
string Types = Df_Type.SelectedValue;
DateTime FromTime = Convert.ToDateTime(Time1.Value);//开始时间
string tempsql = "select dbo.getEndTime('" + FromTime + "'," + days + ",'" + Types + "')";
DfkjToolKit.Dababase.Sqlserver.DbSQLWeb.ConnectionStr = SystemGloable.SqlserverDbConnStr;
DataTable dt = DfkjToolKit.Dababase.Sqlserver.DbSQLWeb.ExecuteDataTable(tempsql);
if (dt.Rows.Count > 0)
{
DateTime endtime1 = Convert.ToDateTime(dt.Rows[0][0].ToString());
endtime = Convert.ToString(endtime1);
}
Time2.Value = endtime;
}
}
今天碰到一个问题“验证控件与OnTextChanged事件”。今天在修改以前的一段程序时发现当我在该textbox里填写非数字时验证控件提示错误,同时继续运行OnTextChanged事件。让我郁闷好一会儿。Google半天都没发现有解决类似问题的方法。查了下msdn 关于“RegularExpressionValidator”控件的使用方法时发现有个属性“IsValid”用来判断 指定控件是否通过验证。于是我在OnTextChanged事件 中 加了判断 if (RegularExpressionValidator1.IsValid)。但是发现还是没有效果。判断验证控件事件与OnTextChanged事件同时进行所以 程序在进入OnTextChanged事件时“IsValid”值未改变。(这是我个人的判断因为没办法搞清楚两个事件执行的先后顺序)。同时在msdn处发现该验证控件还有一个方法“Validate()”有更新“IsValid”属性的作用。于是我就在程序中在判断if (RegularExpressionValidator1.IsValid)。前执行了“Validate()”。运行调试程序发现程序运行正常。
浙公网安备 33010602011771号