在VB.net中为DATAGRID控件增加一个删除按钮的一种方法
2004-07-04 21:59
447 查看
当你在开发ASP.NET Web应用程序时,会遇到这样的情况: 你需要给一个ASPX页面呈现的HTML添加客户端脚本代码。 有两种不同的方法可以让你在运行时添加这个代码。第一种方法就是运用Page控件的RegisterClientScriptBlock方法, 它可以让你在运行时给一个ASPX页面添加代码。该方法有两个参数——key和script。 参数key是唯一的,可以识别你添加到页面的每个script块。你可以用IsClientScriptBlockRegistered属性以及key的值来避免重复添加脚本代码。 参数script是个字符串,它包含你的客户端脚本代码。在用户点击了一个按钮时,下面的JavaScript代码会提示他们做确认:
Private Sub Page_Load(byval sender as Object, ByVal e as EventArgs)
'Create your script code
Dim sScript as String = " "
?? sScript = "function confirmDelete() {"
?? sScript += "confirm('Are you sure?');}"
?? sScript += " "
If(Not IsClientScriptBlockRegistered("MyScript") ) Then
RegisterClientScriptBlock("MyScript", sScript)
End If
End Sub
在将前面的脚本代码添加到你的Web页面后,你就需要一种方式从单独的控件来调用它。然而,你不能在设计时将一个客户端事件处理程序添加到按钮的onClick事件来调用你的confirmDelete函数。你需要一种方法在运行时添加客户端事件过程。当用户点击了按钮时,ASP.NET按钮控件会提交一个Web页面,触发服务器端的Button_Click()事件过程(event procedure)。第二种在运行时添加客户端代码的方法就是运用Attributes属性,这是一个与服务器控件相关的属性集。在运行时,页面将你添加到该集合的任何属性呈现为HTML。从System.Web.UI.WebControls.WebControl派生的ASP.NET服务器控件,包括按钮和文本框,具有它们自己的Attributes集合属性。你可以用你的按钮的Attributes集合来调用confirmDelete函数:
上面的代码很可能出现在页面的OnLoad事件过程中。现在,当一个用户点击你的按钮时,一个确认信息框就会问他/她是否要进行删除操作。如果用户点击OK,该页面就被提交到服务器,并执行btnDelete_Click()事件过程中的任何代码。点击Cancel会阻止将页面提交到Web服务器。 当你有一个DataGrid控件,而且DataGrid允许用户删除网格(grid)中的一行时,你不需要某些客户端代码,你只需要点击网格上的Delete按钮就可以删除行了,但是删除时不会提示用户进行确认。这时Attributes属性就派得上用场了。你可以用DataGrid的ItemDataBound()服务器事件给网格中的每个删除按钮添加一个属性。当你用DataGrid的DataBind方法将数据绑定到网格时,所添加的每一行都会触发ItemDataBound事件。在事件中添加的代码如下:
在给你的ASP.NET应用程序添加客户端脚本代码后,你会很快地看到脚本代码所带来的好处。你的应用程序的用户将很感激你给他们提供了更具交互性、响应更快的界面。
Private Sub Page_Load(byval sender as Object, ByVal e as EventArgs)
'Create your script code
Dim sScript as String = " "
?? sScript = "function confirmDelete() {"
?? sScript += "confirm('Are you sure?');}"
?? sScript += " "
If(Not IsClientScriptBlockRegistered("MyScript") ) Then
RegisterClientScriptBlock("MyScript", sScript)
End If
End Sub
在将前面的脚本代码添加到你的Web页面后,你就需要一种方式从单独的控件来调用它。然而,你不能在设计时将一个客户端事件处理程序添加到按钮的onClick事件来调用你的confirmDelete函数。你需要一种方法在运行时添加客户端事件过程。当用户点击了按钮时,ASP.NET按钮控件会提交一个Web页面,触发服务器端的Button_Click()事件过程(event procedure)。第二种在运行时添加客户端代码的方法就是运用Attributes属性,这是一个与服务器控件相关的属性集。在运行时,页面将你添加到该集合的任何属性呈现为HTML。从System.Web.UI.WebControls.WebControl派生的ASP.NET服务器控件,包括按钮和文本框,具有它们自己的Attributes集合属性。你可以用你的按钮的Attributes集合来调用confirmDelete函数:
btnDelete.Attributes.Add("onClick", "return confirmDelete();")
上面的代码很可能出现在页面的OnLoad事件过程中。现在,当一个用户点击你的按钮时,一个确认信息框就会问他/她是否要进行删除操作。如果用户点击OK,该页面就被提交到服务器,并执行btnDelete_Click()事件过程中的任何代码。点击Cancel会阻止将页面提交到Web服务器。 当你有一个DataGrid控件,而且DataGrid允许用户删除网格(grid)中的一行时,你不需要某些客户端代码,你只需要点击网格上的Delete按钮就可以删除行了,但是删除时不会提示用户进行确认。这时Attributes属性就派得上用场了。你可以用DataGrid的ItemDataBound()服务器事件给网格中的每个删除按钮添加一个属性。当你用DataGrid的DataBind方法将数据绑定到网格时,所添加的每一行都会触发ItemDataBound事件。在事件中添加的代码如下:
Private Sub MyDataGrid_ItemDataBound(ByVal _ Sender as object, ByVal e As _ System.Web.UI.WebControls. _ DataGridItemEventArgs) _ Handles MyDataGrid.ItemDataBound 'This code adds javascript to the "Del" 'button on each row in 'the datagrid the javascript displays a 'message box to the 'user, confirming the delete action Dim btnDel As LinkButton Const DEL_COLUMN As Int16 = 1 If Not (e.Item.ItemType = _ ListItemType.Header Or _ e.Item.ItemType = _ ListItemType.Footer) Then btnDel = _ e.Item.Cells(DEL_COLUMN).Controls(0) btnDel.Attributes.Add("onClick", _ "confirmDelete();") End If End Sub
在给你的ASP.NET应用程序添加客户端脚本代码后,你会很快地看到脚本代码所带来的好处。你的应用程序的用户将很感激你给他们提供了更具交互性、响应更快的界面。
相关文章推荐
- VB6中用DataReport做报表
- 如何利用vb6使自己的软件加上卸载功能[图]
- 技术问题!
- VB.NET中获取数组的秩(维数)和维度的上限
- 请教一个vb修改注册表的问题
- 重新搭建"灶具维修管理系统"的VB开发环境遇到的几个问题
- 用vsto还是用vba来开发Excel报表?
- VBConversions VB.Net to C# Converter
- Visual Basic 6.0 控件和 .NET 控件的区别
- MSMQ的VB操作代码/步骤(简化版)
- VB是如何做到无所不能的
- Programming MS Office 2000 Web Components第二章第一节(第二部分)
- 100% .NET Control_使用CurrencyManager 创建一个导航条来控制DatagGrid的XNavBar控件(VB.NET).
- 100% .NET Control_自动完成Combobox的XComBo控件(VB.NET)
- 微软的正则表达式教程(五):选择/编组和后向引用
- 微软的正则表达式教程(三):字符匹配
- 微软的正则表达式教程(二):正则表达式语法和优先权顺序
- HOW TO: Debug Visual Basic COM Components That Are Used Within Active Server Pages
- VB.NET笔记(1)类、属性、函数
- 狂搞一個月VB !!!!!!!!!!!!