`
v5qqcom
  • 浏览: 1281986 次
文章分类
社区版块
存档分类
最新评论

服务端客户端常用方法(asp.net javascript)

 
阅读更多
一、要在客户端的事件中显示服务端代码才能拿到的数据,怎么办?
一般做法,比如有字符串,是从数据库才能拿到的,但是要在客户端点个button的时候弹出个框显示这个串。可以在服务器端这样给这个button加一个onclick事件。例如,在page的on_load事件中这样写:
this.button.Attributes["onclick"] = string.Format("return ShowDetail('{0}','{1}','{2}');",str0,str1,str2);
这里的str0,str1,str2可以是任意你想显示在客户端的字符串。

在<script></script>教本中,写一个如下的函数:

function ShowDetail (string0,string1,string2)
{
alert(str0+str1+str2);
}

在点击button时,就会弹出显示那三个字符串。
当然,上面的效果直接用response.write就可以办到,但是一般我平时用这个方法主要是为了从服务端传参数给客户端教本的函数。而这在客户端通过在html代码里指定onclick属性是拿不到服务端的数据的。

这里给出一个项目中的代码片断,给每个datagrid的单元格添加一个客户端的点击事件。
private void Dgrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
string strType = "modify";
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Cells[2].Attributes.Add ("onclick",string.Format("ShowDetail('{0}','{1}','{2}')",
strType,DataBinder.Eval(e.Item.DataItem,"WSTypeID"),typefor));
e.Item.Cells[3].Attributes.Add ("onclick",string.Format("ShowDetail('{0}','{1}','{2}')",
strType,DataBinder.Eval(e.Item.DataItem,"WSTypeID"),typefor));
e.Item.Cells[4].Attributes.Add ("onclick",string.Format("ShowDetail('{0}','{1}','{2}')",
strType,DataBinder.Eval(e.Item.DataItem,"WSTypeID"),typefor));
e.Item.Cells[5].Attributes.Add ("onclick",string.Format("ShowDetail('{0}','{1}','{2}')",
strType,DataBinder.Eval(e.Item.DataItem,"WSTypeID"),typefor));
e.Item.Cells[6].Attributes.Add ("onclick",string.Format("delConfirm('{0}')",DataBinder.Eval(e.Item.DataItem,"WSTypeID")));
}
}


二、在客户端事件中调用服务器的一个函数,一个典型的例子就是在点击一个按钮后,弹出一个确认对话框删除一条数据库记录。
一半用的方法就是用__doPostBack(para1,para2)函数
其中para1是一个字符串,代表服务器端一个控件的名字,para2也是一个字符串,可以为空,在服务器我们可以接收到这个参数。

例如:
在服务端有这样的一个LinkButton控件:
protected System.Web.UI.WebControls.LinkButton MyButton;
并且这个MyButton的click事件如下:
private void MyButton_Click(object sender, System.EventArgs e)
{
this.DataGrid1.DataSource = this.Table1.DefaultView;
this.DataBind();
}

然后有一个客户端教本的函数为如下:
function GoServer()
{
if(Confirm("真的要绑定?")
{
_doPostback("MyButton","123abc")
}
}
这时,GoServer被调用的时候,弹出提示框,确定,就会触发服务端MyButton的click事件MyButton_Click;至于GoServer怎么调用,直接赋给一个按钮的点击时间就行了。

三、其他问题。

有时候,一个服务器控件,你用Attributes["onclick"] 这种方式给它添加了一个,点击事件,例如: MyClick()

MyClick()
{
if(Confirm("确定?")
{
_doPostback("Button1","");
}
}

如果在确认框弹出来的时候,你选择否,页面仍会刷新,这明显不符合要求,最后我们的前辈告诉了我原因。
要在代码后面加上:
window.event.returnValue = false;
window.event.cancelBubble = true;
这样,就不会刷新一次了

这里,我在网上copy了一点event的详细资料:

event 对象详解:event代表事件的状态,例如触发event对象的元素、鼠标的位置及状态、按下的键等等。
event对象只在事件发生的过程中才有效。event的某些属性只对特定的事件有意义。比如,fromElement 和 toElement 属性只对 onmouseover 和 onmouseout 事件有意义。下面的例子检查鼠标是否在链接上单击,并且,如果shift键被按下,就取消链接的跳转。

<HTML>
<HEAD><TITLE>Cancels Links</TITLE>
<SCRIPT LANGUAGE="JScript">
function cancelLink()
{
if (window.event.srcElement.tagName == "A" && window.event.shiftKey)
window.event.returnValue = false;
}
</SCRIPT>
<BODY onclick="cancelLink()">
下面的例子在状态栏上显示鼠标的当前位置。
<BODY onmousemove="window.status = 'X=' + window.event.x + ' Y=' + window.event.y">

属性:
altKey, button, cancelBubble, clientX, clientY, ctrlKey, fromElement, keyCode, offsetX, offsetY, propertyName, returnValue, screenX, screenY, shiftKey, srcElement, srcFilter, toElement, type, x, y
1.altKey
描述:
检查alt键的状态。
语法:
event.altKey
可能的值:
当alt键按下时,值为 TRUE ,否则为 FALSE 。只读。

2.button
描述:
检查按下的鼠标键。
语法:
event.button
可能的值:
0 没按键
1 按左键
2 按右键
3 按左右键
4 按中间键
5 按左键和中间键
6 按右键和中间键
7 按所有的键
这个属性仅用于onmousedown, onmouseup, 和 onmousemove 事件。对其他事件,不管鼠标状态如何,都返回 0(比如onclick)。
3.cancelBubble
描述:
检测是否接受上层元素的事件的控制。
语法:
event.cancelBubble[ = cancelBubble]
可能的值:
这是一个可读写的布尔值:
TRUE 不被上层原素的事件控制。
FALSE 允许被上层元素的事件控制。这是默认值。
例子:
下面的代码片断演示了当在图片上点击(onclick)时,如果同时shift键也被按下,就取消上层元素(body)上的事件onclick所引发的showSrc()函数。
<SCRIPT LANGUAGE="JScript">
function checkCancel()
{
if (window.event.shiftKey)
window.event.cancelBubble = true;
}
function showSrc()
{
if (window.event.srcElement.tagName == "IMG")
alert(window.event.srcElement.src);
}
</SCRIPT>
<BODY onclick="showSrc()">
<IMG onclick="checkCancel()" SRC="sample.gif">
4.clientX
描述:
返回鼠标在窗口客户区域中的X坐标。
语法:
event.clientX
注释:
这是个只读属性。这意味着,你只能通过它来得到鼠标的当前位置,却不能用它来更改鼠标的位置。
5.clientY
描述:
返回鼠标在窗口客户区域中的Y坐标。
语法:
event.clientY
注释:
这是个只读属性。这意味着,你只能通过它来得到鼠标的当前位置,却不能用它来更改鼠标的位置。
6.ctrlKey
描述:
检查ctrl键的状态。
语法:
event.ctrlKey
可能的值:
当ctrl键按下时,值为 TRUE ,否则为 FALSE 。只读。
7.fromElement
描述:
检测 onmouseover 和 onmouseout 事件发生时,鼠标所离开的元素。 参考:18.toElement
语法:
event.fromElement
注释:
这是个只读属性。
8.keyCode
描述:
检测键盘事件相对应的内码。
这个属性用于 onkeydown, onkeyup, 和 onkeypress 事件。
语法:
event.keyCode[ = keyCode]
可能的值:
这是个可读写的值,可以是任何一个Unicode键盘内码。如果没有引发键盘事件,则该值为 0 。
9.offsetX
描述:
检查相对于触发事件的对象,鼠标位置的水平坐标
语法:
event.offsetX
10.offsetY
描述:
检查相对于触发事件的对象,鼠标位置的垂直坐标
语法:
event.offsetY
11.propertyName
描述:
设置或返回元素的变化了的属性的名称。
语法:
event.propertyName [ = sProperty ]
可能的值:
sProperty 是一个字符串,指定或返回触发事件的元素在事件中变化了的属性的名称。这个属性是可读写的。无默认值。
注释:
你可以通过使用 onpropertychange 事件,得到 propertyName 的值。

例子:
下面的例子通过使用 onpropertychange 事件,弹出一个对话框,显示 propertyName 的值。
<HEAD>
<SCRIPT>
function changeProp()
{
btnProp.value = "This is the new VALUE";
}

function changeCSSProp()
{
btnStyleProp.style.backgroundColor = "aqua";
}
</SCRIPT>
</HEAD>
<BODY>
<P>The event object property propertyName is
used here to return which property has been
altered.</P>
<INPUT TYPE=button ID=btnProp onclick="changeProp()" VALUE="Click to change the VALUE property of this button"
onpropertychange='alert(event.propertyName+" property has changed value")'>
<INPUT TYPE=button ID=btnStyleProp onclick="changeCSSProp()" VALUE="Click to change the CSS backgroundColor property of this button" onpropertychange='alert(event.propertyName+" property has changed value")'>
</BODY>
12.returnValue
描述:
设置或检查从事件中返回的值
语法:
event.returnValue[ = Boolean]
可能的值:
true 事件中的值被返回
false 源对象上事件的默认操作被取消
13.screenX
描述:
检测鼠标相对于用户屏幕的水平位置
语法:
event.screenX
注释:
这是个只读属性。这意味着,你只能通过它来得到鼠标的当前位置,却不能用它来更改鼠标的位置。
14.screenY
描述:
检测鼠标相对于用户屏幕的垂直位置
语法:
event.screenY
注释:
这是个只读属性。这意味着,你只能通过它来得到鼠标的当前位置,却不能用它来更改鼠标的位置。
15.shiftKey
描述:
检查shift键的状态。
语法:
event.shiftKey
可能的值:
当shift键按下时,值为 TRUE ,否则为 FALSE 。只读。
16.srcElement
描述:
返回触发事件的元素。只读。例子见本文开头。
语法:
event.srcElement
17.srcFilter
描述:
返回触发 onfilterchange 事件的滤镜。只读。
语法:
event.srcFilter
18.toElement
描述:
检测 onmouseover 和 onmouseout 事件发生时,鼠标所进入的元素。 参考:7.fromElement
语法:
event.toElement
注释:
这是个只读属性。
例子:下面的代码演示了当鼠标移到按钮上时,弹出一个对话框,显示“mouse arrived”

<SCRIPT>
function testMouse(oObject)
{
if(oObject.contains(event.toElement))
{
alert("mouse arrived");
}
}
</SCRIPT>
<BUTTON ID=oButton onmouseover="testMouse(this)">Mouse Over This.</BUTTON>
19.type
描述:
回事件名。
语法:
event.type
注释:
返回没有“on”作为前缀的事件名,比如,onclick事件返回的type是click只读。
20. x
描述:
返回鼠标相对于css属性中有position属性的上级元素的x轴坐标。如果没有css属性中有position属性的上级元素,默认以BODY元素作为参考对象。
语法:
event.x
注释:
如果事件触发后,鼠标移出窗口外,则返回的值为 -1,这是个只读属性。这意味着,你只能通过它来得到鼠标的当前位置,却不能
用它来更改鼠标的位置。
21. y
描述:
返回鼠标相对于css属性中有position属性的上级元素的y轴坐标。如果没有css属性中有position属性的上级元素,默认以BODY元素作
为参考对象。
语法:
event.y
注释:
如果事件触发后,鼠标移出窗口外,则返回的值为 -1这是个只读属性。这意味着,你只能通过它来得到鼠标的当前位置,却不能用
它来更改鼠标的位置。


分享到:
评论

相关推荐

    aps.net,Javascript 客户端, 服务端相互调用的代码

    Javascript 客户端, 服务端相互调用的代码 asp.net

    微软开源的SignalR .Net客户端实现ASP.NET SignalR.zip

    The Javascript client.Microsoft.AspNet.SignalR.Core – Core server package with no host implementationMicrosoft.AspNet.SignalR.Hosting.AspNet – The ASP.NET hostMicrosoft.AspNet.SignalR.Hosting.Utils ...

    asp与asp.net的区别

    实际上我们可以把ASP.Net的执行过程看做是编译后的普通语言运行时代码充当一个和前端浏览器和中间件用户交互的应用程序,它接受用户的请求,输出HTML流到客户端显示。除此之外,ASP.Net还可以利用.Net平台架构的诸多...

    ASP.NET(BS构架) 调用启动 IIS服务端exe程序案例

    ASP.NET(BS构架) 调用[启动] IIS服务端exe程序案例 一、本案例使用SB构架调用[启动]IIS服务端exe程序,实现服务端程序执行一系列操作。 二、如果需要启动 客户端 exe程序,则可以考虑使用javascript脚本。 三、...

    ASP.NET AJAX

    无刷新技术 导读:ScriptManager控件包括在ASP.NET 2.0 AJAX Extensions中,它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问Web Service,所有需要支持ASP.NET ...

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术

    8.1 asp.net服务端控件对客户端的支持 297 8.2 clientscriptmanager类功能详解 301 8.2.1 registerarraydeclaration方法 301 8.2.2 registerclientscriptblock方法 302 8.2.3 registerclientscriptinclude方法 ...

    asp.net知识库

    Asp.net 利用OleDb的GetOLEDBSchemaTable方法得到数据库架构信息 用于 Visual Studio .Net 的 IBM DB2 开发外接程序 第2章 并发操作的一致性问题 (2) Using sqlite with .NET Visual Studio 2005 中的新 DataSet ...

    庖丁解牛纵向切入ASP.NET 3.5控件和组件开发技术.pdf

    8.1 asp.net服务端控件对客户端的支持297 8.2 clientscriptmanager类功能详解301 8.2.1 registerarraydeclaration方法301 8.2.2 registerclientscriptblock方法302 8.2.3 registerclientscriptinclude方法303 ...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part1

    8.1 asp.net服务端控件对客户端的支持 297 8.2 clientscriptmanager类功能详解 301 8.2.1 registerarraydeclaration方法 301 8.2.2 registerclientscriptblock方法 302 8.2.3 registerclientscriptinclude方法 ...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part2

    8.1 asp.net服务端控件对客户端的支持 297 8.2 clientscriptmanager类功能详解 301 8.2.1 registerarraydeclaration方法 301 8.2.2 registerclientscriptblock方法 302 8.2.3 registerclientscriptinclude方法 ...

    EdoJS,简单、强大的Javascript框架

    通过Ajax数据交互方式,可以支持多种服务端平台,如ASP.NET、ASP、PHP、JSP、ColdFusion、Ruby on Rails等。 主要特性: 易学易用:10分钟即可掌握EdoJS的编程精髓! 强大的功能、丰富的组件库:已有超过60个组件...

    Hprose与.NET中各种序列化方式的对比

    它支持众多语言和平台,包括主流的.NET、Java、PHP、Python、Ruby、JavaScript、ActionScript、Delphi、FreePascal、Objective-C、ASP、Perl、C++等。通过Hprose可以在这些支持的语言之间实现方便且高效的互通,能够...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    可以加快开发效率,这是行业的发展趋势,但是局限于这样的“傻瓜化开发方式”的开发人员的竞争力和成长性都是非常有限的,遇到ASP.Net一些高级技术(比如ASP.Net MVC、SEO、网站调优、服务端客户端混合编程、AJAX等...

    ASP.NET网站实时显示时间的方法

    本文实例讲述了ASP.NET网站实时显示时间的方法。分享给大家供大家参考。具体方法如下: 在ASP.NET环境中开发设计网站或网络应用程序时,往往需要实时显示当前日期和时间。这时,通常使用AJAX控件来实现。 需要注意的...

    ASP.NET Gridview隐藏/显示列源码

    ASP.NET实现Gridview隐藏/显示列源码 介绍: 这篇文章演示如果让用户有显示/隐藏他们需要的GridView的列的功能,这是非常有用的,因为在GridView的所有列并不是每个的用户都需要的.用户想根据自己的需求看到想要的...

    CFUpdate批量上传组件for ASP.NET v1.1.8

    显示上传速度,进度条,纯正的FLASH代码,使用的是HTTP协议,所以客户端,服务端都不需要安装任何组件因为是模仿FORM表单提交,所以支持所有的网页动态语言:ASP PHP ASP.NET JSP等CFUpdate组件 1.1.8 版增加了a....

    亮剑.NET深入体验与实战精要2

    5.5.3 ASP.NET连接Oracle失败的解决方法 245 本章常见技术面试题 246 常见面试技巧之经典问题巧回答 246 本章小结 247 第6章 关于XML 249 6.1 XML概述 250 6.1.1 XML和HTML有什么区别 250 6.1.2 XML的优势 250 6.2 ...

    亮剑.NET深入体验与实战精要3

    5.5.3 ASP.NET连接Oracle失败的解决方法 245 本章常见技术面试题 246 常见面试技巧之经典问题巧回答 246 本章小结 247 第6章 关于XML 249 6.1 XML概述 250 6.1.1 XML和HTML有什么区别 250 6.1.2 XML的优势 250 6.2 ...

    SignalR 官方实例 vs2012的

    SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。 ...

Global site tag (gtag.js) - Google Analytics