文章采集调用(ASP.Net中如何利用客户端的javascript脚本提高程序执行效率)

优采云 发布时间: 2022-01-28 15:22

  文章采集调用(ASP.Net中如何利用客户端的javascript脚本提高程序执行效率)

  本文介绍如何在应用程序中使用客户端javascript脚本来提高程序的执行效率,实现更多的功能。

  一、ASP.Net 和 Javascript

  .Net是微软下一代战略的核心,ASP.Net是.Net战略在Web开发中的具体实现。它继承了 ASP 的简单易用,克服了 ASP 程序结构差,难以阅读和理解的缺点。特别是服务器端控件和事件驱动模式的引入,使得Web应用程序的开发更接近于过去桌面程序的开发。

  在介绍 ASP.Net 的各种文章 和书籍中,重点是服务器控件和 .Net Framework SDK,因为这是 ASP.Net 最新和最具革命性的改进;相反,过去在Web开发中占据重要地位的客户端脚本Javascript(包括VBScript)却很少被提及。似乎使用服务器端程序,不再需要客户端脚本。但是,服务器端程序需要浏览器和 Web 服务器之间的交互。对于ASP.Net来说,就是一个页​​面提交,需要来回发送大量的数据,输入验证或者删除确认等很多任务都是完全可以的。用 Javascript 实现。因此,在 ASP.Net 中如何使用 Javascript 还是有必要探索的。

  二、Javascript应用实例

  1.在页面上的一个服务器控件中添加一个Javascript事件

  最后生成的服务器控件还是普通的HTML,比如生成输入文本。表单中的每个 HTML 控件都有自己的 Javascript 事件,例如 Textbox 有 onchange 事件,Button 有 onclick 事件,Listbox 有 onchange 事件等。要将客户端事件添加到服务器控件,请使用 Attributes 属性。Attributes 属性是所有服务器控件都有的属性,用于在最终生成的 HTML 中添加一些自定义标签。假设Web Form上有一个保存按钮btnSave,你想在用户点击这个按钮时提示用户是否真的要保存(例如,一旦保存就不能恢复等),你应该添加Page_Load 事件的以下代码:

  如果不是 page.isPostBack() 那么

  btnSave.Attributes.Add("onclick","Javascript:return Confirm('Are you sure to save?');")

  万一

  注意,return 是不可避免的,否则即使用户点击取消,数据仍然会被保存。

  2.为Datagrid中的每一行添加Javascript事件

  假设Datagrid的每一行都有一个删除按钮,我们想在用户点击这个按钮时提示用户是否真的要删除这条记录,以防用户点击了错误的行,或者只是不小心点击了删除按钮.

  不管删除按钮的名字是什么,都不能像上例那样直接引用,因为每一行都有这样一个按钮,它是Datagrid中的一个子控件。在这种情况下,您需要使用 Datagrid 的 OnItemDataBound 事件。OnItemDataBound 事件发生在Datagrid 的每一行数据绑定到Datagrid 之后(即,一行触发一次)。首先在Datagrid的声明中加入如下代码:

  …这里的列定义

  这里说明当 OnItemDataBound 事件发生时调用 ItemDataBound 方法,并在代码隐藏文件中添加该方法的定义:

  Sub ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)

  如果 e.Item.ItemType ListItemType.Header 和 e.Item.ItemType ListItemType.Footer 那么

  Dim oDeleteButton As LinkBut​​ton = e.Item.Cells(5).Controls(0)

  oDeleteButton.Attributes("onclick") = "javascript:return Confirm ('Are you sure you want to delete" & DataBinder.Eval(e.Item.DataItem, "m_sName") & "?')"

  万一

  结束子

  由于Datagrid的页眉行和页脚行也会触发这个事件,首先确定触发这个事件的行不是页眉行和页脚行。这里假设Delete按钮位于Datagrid的第6列(第一列是0),Datagrid的Datasource收录一个名为“m_sName”的列

  3、编辑状态下Datagrid中控件的引用

  Datagrid 的内置编辑功能使其成为记录字段较少时的一种编辑方法。用户无需进入单独的页面编辑记录,直接点击编辑按钮即可进入当前行的编辑模式。另一方面,有一些Javascript程序需要引用控件的名称。例如,很多程序在要求用户输入日期时提供了日期控件来保证日期格式的有效性。当用户单击控件图标时,将弹出一个新窗口供用户选择日期。此时需要将显示日期的文本框的 ID 提供给新窗口,以便在用户选择日期时将值回填到文本框中。

  如果是普通的服务器文本框控件,其ID与生成的HTML输入框的ID相同;但是在Datagrid的编辑状态下,两个ID不一样(原因同上例),需要使用控件的ClientID属性。

  Protected Sub ItemEdit(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs)

  将 sDateCtrl 调暗为字符串

  sDateCtrl = grd1. 项目(e.Item.ItemIndex)。单元格(2). FindControl("txtDate") . ClientID

  结束子

  这里假设 ItemEdit 方法是 Dategrid 的 OnItemEdit 事件处理程序,并且 Datagrid 的第三列收录一个名为 txtDate 的服务器文本框控件。

  4.参考ASP.Net自动生成的Javascript程序

  所谓“服务器端控件”是针对开发者的,在生成的HTML源程序中没有服务器端和客户端的区别,都是标准的HTML、DHTML和Javascript。它响应用户输入是因为每个控件的事件处理程序最终都会生成一个脚本,该脚本重新提交页面以使 Web 服务器有机会再次响应和处理。通常我们不必知道这个脚本是什么或者直接调用这个脚本,但是在某些情况下,适当地调用这个脚本可以简化很多工作。请看以下两个例子。

  ● 单击数据网格中的任意位置以选择一行

  Datagrid 提供了一个内置的选择按钮,当单击该按钮时选择当前行(您可以设置 SelectedItemStyle 属性以使当前行具有不同的外观)。然而,用户可能更习惯于点击任何位置来选择一行。完全自己实现这个功能是相当麻烦的。一个好主意是添加一个选择按钮,但将列隐藏,并在单击任何行时调用该按钮生成的 Javascript。

  Sub Item_Bound(ByVal sender As Object, ByVal e As DataGridItemEventArgs )

  将 itemType 调暗为 ListItemType

  itemType = CType(e.Item.ItemType, ListItemType)

  If (itemType ListItemType.Header) 和 _

  (itemType ListItemType.Footer) 和 _

  (itemType ListItemType.Separator) 然后

  Dim oSelect As LinkBut​​ton = CType(e.Item.Cells(5).Controls(0), LinkBut​​ton)

  e.Item.Attributes("onclick") = Page.GetPostBackClientHyperlink(oSelect, "")

  结束子

  这假设选择按钮在第 6 列。e.Item 代表一行,从生成的 HTML 的角度来看,每个都添加了一个 onclick 事件。Page.GetPostBackClientHyperLink方法返回页面中LinkBut​​ton控件生成的客户端脚本,其中第一个参数为Linkbutton控件,第二个参数为传递给该控件的参数,一般为空。如果不是LinkBut​​ton控件,还有一个类似的函数GetPostBackClientEvent,读者可以参考MSDN。

  ● 服务器生成的脚本与手动添加的脚本冲突

  服务器控件的服务器事件一般对应客户端控件的相应事件。例如,Dropdownlist 的 SelectedIndexChanged 事件对应 HTML 的 onchange 事件。如果要手动添加onchange事件,客户端会产生两个onchange,浏览器会忽略一个。比如,每当Dropdownlist中的某个选项发生变化时,用户都想保​​存到数据库中(虽然不是很常见,但是有这样的需求),但同时也想提醒用户是否真的有必要保存。显然,保存的代码应该放在SelectedIndexChanged事件中,提醒工作应该手动加上onchange事件。结果是只能执行两个 onchanges 中的一个。

  Page_Load 方法如下:

  将 sCmd 调暗为字符串

  sCmd=Page.GetPostBackClientHyperlink(btnUpdate, "")

  如果不是 page.isPostback 那么

  下拉列表1.Attributes.add("onchange","ConfirmUpdate(""" & sCmd & """)")

  万一

  ConfirmUpdate函数如下

  Javascript eval 函数在这里用于调用收录在字符串中的命令。需要注意的是,收录命令的字符串不能用单引号括起来,因为自动生成的脚本中收录单引号,所以这里用两个双引号来表示字符串本身的双引号。

  三、结束语

  以上简要讨论了在ASP.Net中插入Javascript的几种情况。在服务器程序中合理插入客户端Javascript脚本,可以提高程序的运行效率,提供更友好的用户界面。

  参考示例:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线