快速业务通道

只允许输入数字型Textbox演示

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-19

有一个需求,需要在GridView中批量输入数字!

于是想到封装一个TextBox

代码如下:

public class NumberText : TextBox
{
private const string SMB_NUMBER_SCRIPT_ID = "{c4f7dcfd-8f9b-4fe8-8bd1-4a8a1f145c0c}";
private const string SMB_NUMBER_SCRIPT_ONLY_HOOK = "return NumberEditor_KeyPress_Handle(this)";
private const string SMB_NUMBER_SCRIPT_ONLY_SCRIPT = "<script language=\"javascript\">\n" +
"function NumberEditor_KeyPress_Handle(ctrl)\n{{" +
"if(event.keyCode == 13) \n return true;\n" +
"if(event.keyCode<48 || event.keyCode>57 )\n" +
"return false;\n else \n return true;\n}}" +
"</script>";
private void RenderJavscript()
{
if (!Page.ClientScript.IsClientScriptBlockRegistered(SMB_NUMBER_SCRIPT_ID))
{
Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), SMB_NUMBER_SCRIPT_ID, string.Format(SMB_NUMBER_SCRIPT_ONLY_SCRIPT, base.ID));
}
}
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
base.AddAttributesToRender(writer);
writer.AddAttribute("OnKeyPress", SMB_NUMBER_SCRIPT_ONLY_HOOK);
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
RenderJavscript();
}
public NumberText()
: base()
{ }
}

关键点:第一,不要重复注册脚本,第二:要写在OnPreRender事件中

在引用的Page页面中,可以这样调用 

protected override void OnPreLoad(EventArgs e)
    {
      base.OnPreLoad(e);
      NumberText number = new NumberText();
      place1.Controls.Add(number);//放在一个PlaceHolder中
    }

这样一来, 这个 NumberText只接收数字输入,如果需要小数点,可以再修改代码。不过,这里建议用两个NumberText来拼一个浮点数字,这样很好验证,因为小数字的位置不好固定。当然用正则也可以。

这里给出另外一个例子,首先,客户端验证:

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.ClientScript.IsClientScriptBlockRegistered("ClientCheck"))
{
Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "ClientCheck", GetCheckScript());
}
if (txtAvePrice != null) { txtAvePrice.Attributes.Add("onblur", "ClientCheckFunction(''" + txtAvePrice.ClientID + "'',6,2)"); }
}
/**//// <summary>
/// 得到一段检测输入是否为有效数据的脚本
/// 使用方法: txtBox..Attributes.Add("onBlur", "ClientCheckFunction(''txtBox'',6,2)");
/// 说明检测的TextBox为 txtBox,并且整数位为6位,小数位为2位
/// </summary>
/// <returns></returns>
private string GetCheckScript()
{
return @"<script language=""javascript""&g

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号