`

服务器端控件的"客户端"

    博客分类:
  • .NET
阅读更多

 

控件的服务端ID和客户端ID

 

比如一个ID为TextBox1的服务器端控件,在客户端访问该控件的DOM元素时

 

错误: var txtbox=document.getElementByID("TextBox1");

 

正确: var txtbox=document.getElementByID('<%=TextBox1.ClientID%>');

 

原因: 服务器端控件不像客户端控件那样只有一个ID。服务器端控件有三个属性表示控件的唯一名称 : ID UniqueID ClientID。ID表示我们给它命名的ID,而不管在服务端还是在客户端都不会使用这个ID。UniqueID表示服务端ID。ClientID表示客户端ID。从使用角度讲,如果继承了INamingContainer接口,当我们为子控件设定一个ID后,它的UniqueID和ClientID会自动加上父控件的名称和分隔符作为前缀,服务端前缀分隔符为$,客户端前缀符为_。

 

如果采用前面的错误的写法,某天把TextBox1控件放到母板容器中,TextBox1控件的UniqueID会变为Panel1$TextBox1,其ClientID会变为Panel1_TextBox1,这时当然获取不了。之前没放在容器控件里,TextBox1控件的ID UniqueID ClientID恰巧是一样的。

 

 

在ASP.NET服务端控件出现以前,开发人员使用HTML客户端元素标记可以操作的事件非常丰富(accesskey,align,class,dir,disabled,id,lang,language,style,tabindex,title,onactivate,onafterupdate,

onbeforeactivate,onbeforecopy,onbeforecut,onbeforedeactivate,onbeforeeditfocue,onbeforepaste,

onbeforeupdate,onblur,onclick,oncontextmenu,oncontrolselect,oncopy,oncut,ondbclick,ondeactivate,

ondrag,ondragend,ondragenter,ondragleave,ondragover,ondragstart,ondrop,onerrorupdate,

onfilterchange,onfocus,onfocusin,onfocusout,onhelp,onkeydown,onkeypress,onkeyup,

onlayoutcomplete,onlosecapture,onmousedown,onmouseenter,onmouseleave,onmouseout,

onmousemove,onmouseover,onmouseup,onmousewheel,onmove,onmoveend,onmovestart,onpaste,

onpropertychange,onreadystatechange,onresize,onresizeend,onresizestart,onscroll,onselectstart,

ontimeerror)

这些属性和事件除了在HTML元素中使用外

<input type=text onmouseover="this.style.backgroundColor='red';" 

onmouseover="this.style.backgroundColor='white';"/>

对于ASP.NET控件也是可以使用的

 

方法1(照搬法) 像使用HTML客户端元素一样,强制为服务端控件增加客户端属性和事件,如:

<asp:TextBox ID=“TextBox1” runat=“server” onmouseover="this.style.backgroundColor='red';" 

onmouseover="this.style.backgroundColor='white';"></asp:TextBox>

但当我们要为位于容器控件内的子控件强制增加客户端属性和事件时是不会成功的。

 

方法2(使用服务端控件的Attributes属性)

this.TextBox1.Attributes.Add("onmouseover","this.style.backgroundColor='Red';"); 增加一个行为

this.TextBox1.Attributes.Remove("onmouseover");  删除一个行为

this.TextBox1.Attributes["onmouseover"]="this.style.backgroundColor='Red';"; 

修改一个行为(如果此key对应的值为null则新增一个行为)

 

对于复杂控件的处理(在此以GridView为例)

Protected void GridView1_RowDataBound(object sender,GridViewRowEventArgs e)

 {

     if(e.Row.RowType==DataControlRowType.DataRow)

     //鼠标移动到每项时产生颜色交替效果

     e.Row.Attributes.Add("onmouseover","this.style.backgroundColor='Red';"this.style.Color='Black'");

     e.Row.Attributes.Add("onmouseout","this.style.backgroundColor='Black';"this.style.Color='Red'");

     //单击 双击 按键事件

     e.Row.Attributes.Add("OnClick","ClickEvent('"+e.Row.Cells[1].Text+"')");

     e.Row.Attributes.Add("OnDblClick","BbClickEvent('"+e.Row.Cells[1].Text+"')");

     e.Row.Attributes.Add("OnKeyDown","GridViewItemKeyDownEvent('"+e.Row.Cells[1].Text+"')");

     //设置鼠标指针为小手

     e.Row.Cells[1].Attributes["style"]="Cursor:hand";

 }

以上对GridView的数据行对象(tr)设置了一些客户端效果,如鼠标进入离开事件单击双击事件按键事件,最后还对每行的第二个单元格(td)设置了小手形状的鼠标样式。

分享到:
评论

相关推荐

    C# 实用教程-服务器端控件

    服务器端控件的主要特点在于,它们在服务器上执行大部分处理,包括事件处理和数据绑定,然后将HTML响应发送到客户端。以下是一些关键知识点: 1. **控件类型**:服务器端控件分为多种类型,如HTML控件(模仿HTML...

    ASP.NET服务器端控件介绍

    ASP.NET服务器端控件是.NET框架中Web Forms编程模型的核心组成部分,它们在服务器上执行,负责处理用户交互并生成HTML响应。以下是对这些知识点的详细解释: 1. **服务器控件简介**: ASP.NET服务器控件是运行在...

    TCP/IP环境下实现服务器端和客户端两部分程序

    在TCP/IP环境下构建服务器端和客户端程序是网络通信的基础,主要涉及互联网协议栈中的传输层协议TCP(Transmission Control Protocol)和应用层的Socket接口。TCP是一种面向连接的、可靠的、基于字节流的传输层通信...

    ExtJs的服务器端控件实现

    首先,服务器端控件是Web开发中的一个重要概念,它们允许开发者在服务器端处理业务逻辑和数据操作,然后将结果返回给客户端。在ExtJS中,虽然主要是前端框架,但通过Ajax技术,我们可以与各种服务器端平台(如Java, ...

    苏鹏asp.net教程(服务器端控件)

    首先,服务器端控件与客户端控件的主要区别在于,服务器端控件在服务器上进行处理,并且在每次页面生命周期中的事件发生时,都会回传到服务器。这使得服务器端控件能够处理复杂的数据绑定和验证,提供更多的功能和...

    .net FreamWork的服务器端控件源代码

    服务器端控件与客户端控件的主要区别在于,服务器端控件在服务器上处理事件,并通过HTTP协议将结果回传到客户端。这些控件在服务器上生成HTML标记,并且可以在页面生命周期的不同阶段进行操作,包括初始化、加载、回...

    PB_winsock服务器端与客户端

    在PB中,我们可以使用Winsock控件来创建服务器端,监听特定的端口,当有客户端连接时,接收并处理客户端发送的数据。 2. **客户端程序**:客户端程序则需要知道服务器的IP地址和端口号,以便发起连接。PB中的...

    ajax 服务器端控件详解

    该框架不仅提供了一系列服务器端控件,还包含了一套客户端JavaScript库,使得开发人员无需深入掌握复杂的JavaScript编程即可开发出具有AJAX特性的Web应用。 ##### 2.2 主要特性 - **服务器端控件**:包括...

    javascript获得服务器端控件的ID的实现代码.docx

    一个常见的需求就是在客户端通过JavaScript获取服务器端控件的ID,以便进行进一步的处理或交互操作。本文将详细介绍如何在JavaScript中获取服务器端控件的ID,并提供完整的代码示例。 #### 二、知识点解析 ##### 1...

    ASP技术常遇问题解答-服务器端控件是如何操作的?.zip

    首先,服务器端控件与客户端控件的主要区别在于,服务器端控件在服务器上执行其功能,而客户端控件则主要在用户的浏览器中运行。服务器端控件的优势在于,它们可以在服务器上进行复杂的逻辑处理,提供更好的安全性和...

    Ftp服务器端客户端程序

    在这个压缩包中,包含了由VC(Visual C++)开发的FTP服务器端和客户端程序,这对于理解和学习FTP工作原理以及如何通过编程实现FTP功能是非常有价值的。 首先,我们要理解FTP服务器端程序。在VC环境下开发的FTP...

    VB开发象棋游戏(服务器端与客户端)

    【标题】"VB开发象棋游戏(服务器端与客户端)"揭示了这是一个使用Visual Basic(VB)编程语言开发的项目,旨在创建一个完整的网络象棋游戏。游戏包含两个主要组成部分:服务器端和客户端。服务器端作为游戏的中枢,...

    本代码实现了多线程断点续传,包含服务器端和客户端(84kb)

    这段描述提及的代码实现了一种结合这两种技术的解决方案,包括服务器端和客户端的完整功能。 首先,让我们了解一下多线程。在计算机编程中,多线程是指一个程序内同时执行多个线程,每个线程都有自己的任务。在文件...

    FTP服务器端和客户端源码

    在这个"FTP服务器端和客户端源码"项目中,开发者使用了MFC(Microsoft Foundation Classes)框架来构建了一个具备图形用户界面(GUI)的FTP应用。MFC是微软提供的一套面向对象的C++库,它简化了Windows应用程序的...

    ios移动社交app的客户端+webservice服务器端源码

    在iOS平台上开发移动社交应用程序,通常涉及到多个技术层面,包括客户端和服务器端的协同工作。本资源提供的"ios移动社交app的客户端+webservice服务器端源码"正是一个完整的解决方案,涵盖了用户交互、数据交换...

    2022年优秀-ASPNET服务器端控件.pptx

    ASP.NET服务器端控件是构建基于ASP.NET技术的Web应用程序的核心元素。这些控件在服务器端执行,并在客户端呈现为HTML。2022年的优秀ASP.NET服务器端控件不仅包含传统的HTML元素,还提供了丰富的功能和灵活性,帮助...

    服务器端控件,和内置对象使用,数据绑定使用

    在.NET框架中,服务器端控件是ASP.NET的核心组成部分,它们是用于构建动态网页的关键工具。服务器端控件提供了一种方便的方式来创建交互式的、数据驱动的Web应用程序。这些控件不仅负责显示用户界面,还能处理用户的...

    2022年优秀-ASPNET服务器端控件培训课件.pptx

    ASP.NET服务器端控件是构建动态网页的关键组件,它们在ASP.NET框架中扮演着至关重要的角色。这些控件不仅提供了一种在服务器端处理用户交互的方式,还简化了开发过程,提高了代码的可维护性和复用性。在2022年的优秀...

    【ASP.NET编程知识】HTML服务器控件和WEB服务器控件的区别和联系介绍.docx

    * HTML 服务器控件主要用于实现服务器端的数据绑定和事件处理,而 WEB 服务器控件主要用于实现服务器端的数据绑定和事件处理,同时也可以实现客户端的交互 * HTML 服务器控件可以灵活地自定义 HTML 代码,以适应不同...

    VC实现局域网内文件传输,包含服务器端和客户端源码

    本项目通过VC++(Visual C++)环境,实现了局域网内的文件传输功能,包括服务器端和客户端的源码,为开发者提供了完整的解决方案。下面将详细阐述这个项目的核心知识点。 首先,VC++是一种基于Microsoft Windows...

Global site tag (gtag.js) - Google Analytics