思维的乐趣

Enjoy it
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

常用WEB控件使用的几个注意点

Posted on 2010-05-17 22:16  szh114  阅读(437)  评论(0编辑  收藏  举报

1:TextBox中,如果设置了TextMode属性为:MultiLine,那么MaxLength属性将自动失效,即使你设置了它。

2:默认的TextBox,SingleLine的不必说只有一行高度,但是对于MultiLine的TextBox来说,它的高度默认为2行,要调整这个高度可通过Rows属性来设置。

3: 关于OnClick,OnClientClick,onclick,onserverclick

这四个属性,前两个适用于asp:Button控件,后两个适用于html的设置了runat="server"属性的控件。

先看前两个,使用示例如下:

<asp:Button ID="Button1" runat="server" Text="Button" OnClick="on_Click" OnClientClick="onBtClick()" />

理论上来讲是,OnClientClick触发的是写好的javascript代码函数,而OnClick触发的是客户C#/vb.net函数代码,并且,当用户在页面上点击Button时,先在客户端发生OnClientClick事件,然后引发postback,最后再引发server端的OnClick事件。并且,当OnClientClick事件的函数返回false时,就不会引发postback然后server端的OnClick事件也不会发生。所以我们可以利用这个事件机制,来制定先在客户端验证,然后有条件的触发server端事件的功能。但是要注意,如下的客户端函数:

    <script type="text/javascript">
        function onBtClick()
        {
            alert("client check failed!");
            return false;
        }
    </script>

我会想当然的认为实现了所需,但事实上执行一下就会发现,尽管我return false;了,但是server端事件还是会发生,为什么呢?因为OnClientClick只是ASP.NET控件的一个属性,它只是得到了一个字符串,具体结果还要进一步解析,所以,正确的写法应该是:

<asp:Button ID="Button1" runat="server" Text="Button" OnClick="on_Click" OnClientClick="return onBtClick()" />

这样就可以实现前面所设想的功能了。

至于后面两个属性:onclick,onserverclick则又跟前面的写法不同,这一次onclick执行的是客户端脚本,而onserverclick才是执行的server 端函数。并且既然要用onserverclick属性,那就一定要指定runat="server"。否则,就没意义了。