在ASP.Net中应用Javascript

概要

本文结合示例讲述了在ASP.net应用程序中如何利用客户端的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,比如<asp:textbox>生成input text。表单中的每个HTML控件都有它自己的Javascript事件,比如Textbox有onchange事件,Button有onclick事件,Listbox有onchange事件等。要想为服务器控件添加客户端的事件,需要用到Attributes属性。Attributes属性是所有的服务器控件都有的一个属性,它用来为最终生成的HTML添加自定义的一些标记。假设Web Form上有一个保存按钮btnSave,希望在用户点此按钮时提示用户是否确实要保存(比如一旦保存就无法恢复等),则应在Page_Load事件中添加如下代码:

if not page.isPostBack() then

btnSave.Attributes.Add(“onclick”,”Javascript:return confirm(‘Are you sure to save?’);”)

end if

要注意的是‘return’,这是不可省的,否则即使用户点了取消,数据仍然会保存。

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

假设Datagrid的每一行有一个删除按钮,希望在用户点此按钮时提示用户是否确实要删除此条记录,以防用户点错了行,或仅仅是无意中点了删除按钮。

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

<asp:datagrid id="grd1" runat="server" OnItemDataBound = "ItemDataBound" >

…Columns definition here

</asp:datagrid> 此处说明OnItemDataBound事件发生时调用ItemDataBound方法,在代码后置文件中添加此方法的定义:

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

If e.Item.ItemType <> ListItemType.Header And e.Item.ItemType <> ListItemType.Footer Then

Dim oDeleteButton As LinkButton = 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") & "?')"

End If

End Sub

由于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)

Dim sDateCtrl as string

sDateCtrl = grd1. Items (e.Item.ItemIndex) . Cells(2). FindControl("txtDate") . ClientID

End Sub

这里假设ItemEdit方法是Dategrid的OnItemEdit事件处理程序,同时在Datagrid的第三列包含一个名为txtDate的服务器文本框控件。

4.引用ASP.Net自动生成的Javascript程序

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

● 点Datagrid的任一位置以选中一行

Datagrid提供了一种内置的选择按钮,当点此按钮时选中当前行(可以设置SelectedItemStyle属性以使当前行有不同的外观)。但用户可能更习惯于点任意一个位置都能选中一行,如果完全自己实现这个功能相当烦琐。一个好的思路是添加一个选择按钮,但使此列隐藏,当点任一行时调用此按钮产生的Javascript脚本。

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

Dim itemType As ListItemType

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

If (itemType <> ListItemType.Header) And _

(itemType <> ListItemType.Footer) And _

(itemType <> ListItemType.Separator) Then

Dim oSelect As LinkButton = CType(e.Item.Cells(5).Controls(0), LinkButton)

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

End Sub

这里假设选择按钮位于第6列。e.Item代表了一行,从生成的HTML上看就是在每个<tr>里增加了一个onclick事件。Page.GetPostBackClientHyperLink方法返回页面中LinkButton控件产生的客户端脚本,其中第一个参数是Linkbutton控件,第二个参数是传递给此控件的参数,通常为空。如果不是LinkButton控件,有一个类似的函数GetPostBackClientEvent,读者可以参考MSDN。

● 服务器产生的脚本与手工添加的脚本冲突

服务器控件的服务器事件一般对应到客户端控件的相应事件,如Dropdownlist的SelectedIndexChanged事件对应HTML <Select>的onchange事件。如果你要手工增加一个onchange事件,则会在客户端产生两个onchange,浏览器就会忽略掉一个。比如用户希望每当改变了Dropdownlist中的选项就保存到数据库(虽然不是很常见,但确实有这种需要),但同时还希望提醒用户是否确实要做保存。显然,保存的代码应该放在SelectedIndexChanged事件中,而提醒的工作应该手工加一段onchange事件。结果就是两个onchange只能执行一个。正确的方法应该是添加一个不可见的保存按钮,在手工增加的onchange事件中调用此按钮生成的程序。

Page_Load方法如下:

Dim sCmd as string

sCmd=Page.GetPostBackClientHyperlink(btnUpdate, "")

If not page.isPostback then

Dropdownlist1.Attributes.add("onchange","ConfirmUpdate(""" & sCmd & """)")

End if

ConfirmUpdate函数如下

<Script language=”javascript”>

function ConfirmUpdate(cmd){

if confirm(“Are you sure to update?”)

eval(cmd);

}

</Script>

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

三、结束语

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

转载于:https://www.cnblogs.com/ghost527/archive/2005/01/25/97332.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在ASP.NET的DatePicker控件是一种用于在Web应用程序选择日期的控件。它是一种基于浏览器的日期选择工具,允许用户从一个可视化的日历选择日期。 DatePicker控件具有多种特性,可以根据需要进行配置。首先,可以设置控件的日期格式,如yyyy/mm/dd或mm/dd/yyyy等。其次,可以设置最小日期和最大日期,以限制用户选择的日期范围。还可以设置日期的默认值,从而为用户提供一个预选的日期。此外,DatePicker控件还支持本地化,可以根据不同的区域设置显示日期的语言和格式。 在ASP.NET,可以通过以下步骤使用DatePicker控件。首先,在页面上添加一个DatePicker控件,可以使用ASP.NET的工具箱或手动编写代码来完成。然后,在控件的属性进行设置,如日期格式、最小日期、最大日期等。接下来,可以在代码获取用户选择的日期,并将其用于进一步的处理,如保存到数据库、执行计算或显示在页面上。 在使用DatePicker控件时,还需要注意一些事项。首先,要确保在页面引入DatePicker的脚本文件,以便控件能够正常工作。其次,在用户输入日期时,需要进行有效性验证,以确保输入的日期格式正确。此外,还可以通过CSS对DatePicker进行样式调整,以适应不同的设计风格。 总体而言,在ASP.NET,DatePicker控件是一个方便易用的工具,可以简化日期选择的过程,并提供了许多定制和配置的选项,以满足不同的需求。它可以用于各种Web应用程序,如预约系统、任务管理系统等,提供更好的用户体验和功能性。 ### 回答2: 在ASP.NET的DatePicker控件是用于日期选择的一个常见控件。它是基于jQuery UI的DatePicker控件定制而来的一种服务器端控件。 在ASP.NET使用DatePicker控件可以简化日期选择的过程。通过在页面添加DatePicker控件,用户可以通过点击文本框弹出一个日历选择器,然后从日历选择一个日期,这个选择的日期将会自动填充到文本框。DatePicker控件可以方便地在日期控件和文本框之间进行数据交互,并且提供了丰富的选项来自定义日期选择器的外观和行为。 在ASP.NET页面使用DatePicker控件,首先需要引入相应的JavaScript和CSS文件,这些文件通常是通过NuGet包管理器安装的。然后,在页面的代码部分,我们可以通过定义一个TextBox控件,并在其属性指定DatePicker控件类型,来创建和配置一个DatePicker控件。 使用DatePicker控件还可以通过设置其属性来控制日期选择范围、日期格式、默认选日期、禁用某些特定日期等。除了基本的日期选择功能外,DatePicker控件还可以与其他服务器端控件配合使用,例如可以在选日期后自动提交表单、根据选择的日期显示相关数据等等。 总的来说,ASP.NET的DatePicker控件提供了一种简单而有效的日期选择解决方案,可以帮助开发者实现日期选择功能并提升用户体验。 ### 回答3: DatePicker控件是ASP.NET的一种常用控件,用于在Web应用程序显示和选择日期。它可以帮助用户方便地从一个可视化的日历选择一个日期。 DatePicker控件具有以下特点: 1. 简单易用:DatePicker控件使用起来非常简单,只需要将它添加到网页的表单即可。它提供了一个可视化的日历界面,用户可以直接在日历点击选择日期。 2. 样式可定制化:DatePicker控件支持自定义样式,可以根据需求调整其外观和布局。用户可以设置日期文本框的外观、日历的大小和样式等。 3. 日期范围选择:DatePicker控件可以限制可选择的日期范围,用户只能在指定的日期范围内选择日期。这有助于防止用户选择无效的日期。 4. 时间格式设置:DatePicker控件支持不同的时间格式,可以根据需要设置日期和时间的显示格式。用户可以选择显示年、月、日,还是显示时、分、秒,以及日期的顺序等。 5. 日期格式验证:DatePicker控件内置了日期格式验证功能,用户输入的日期格式不正确时,会自动给出错误提示,防止用户输入无效的日期。 6. 服务器端和客户端事件:DatePicker控件可以触发服务器端和客户端的事件。用户可以在选择日期后执行特定的操作,比如保存选择的日期、执行日期计算等。 总之,DatePicker控件是ASP.NET一个非常便捷和实用的日期选择控件。它可以帮助用户方便地选择和输入日期,提高用户体验,并且具有灵活的样式和验证功能。在开发Web应用程序时,可以考虑使用DatePicker控件来提供日期选择功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值