前几天,有个网友问我这么一个问题:“当点击DataGrid中的某行或某个Cell时(DataGrid中的数据是通过DataSet得到的),能弹出一个对话框,这个对话框能显示点击的这一行的所有字段信息,应该如何实现?”
正好,我前一阵子写了个小例子,现在我来介绍怎么结合JavaScript来实现这个需求。
我们知道web控件最终都是被转化成html控件在客户端显示的,所以了解了DataGrid里的元素都一一对应着哪些html元素是解决问题的关键。
首先,我们要在DataGrid的 ItemDataBound 事件里,将我们所需要的 javascript 处理添加进去。
private int index = 0; // 绑定数据的下标。
private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
e.Item.Attributes.Add("id", "row_" + index.ToString());
e.Item.Attributes.Add("onmouseover", "Mouse_Over(this)");
e.Item.Attributes.Add("onclick", "Item_Click(this)");
index++;
}
解释一下, DataGrid1 将被转化成名为"DataGrid1"的<table>HTML标签, e.Item 其实就这个Table中的<TR>即每一行。
我将把每一行的唯一标识 row_0 ... 添加到这个<TR>里。然后呢,我添加了这行鼠标滑过的客户端事件的处理函数(javascript) —— Mouse_Over(this),最后添加了这一行鼠标点击的客户端事件处理函数 —— Item_Click(this)。
这样,我知道在aspx页内添加两个相关javascript的实现就可以啦。
<!--
.style3 { FONT-WEIGHT: bold; COLOR: #ffffff }
.style1 { BORDER-RIGHT: gray thin solid; BORDER-TOP: gray thin solid; BORDER-LEFT: gray thin solid }
.style2 { BORDER-RIGHT: gray thin solid; BORDER-TOP: gray thin solid; BORDER-LEFT: gray thin solid; BORDER-BOTTOM: gray thin solid }
TD { FONT-SIZE: 15px }
-->var preId = "";
function Mouse_Over(item)
{
var preItem = document.getElementById(preId);
if(preItem != null)
preItem.setAttribute("bgcolor", "#ffffff", 0);
var id = item.getAttribute("id");
if( preId != id );
{
item.setAttribute("bgcolor", "AliceBlue", 0);
preId = id;
}
}
function Item_Click(item)
{
var record = [];
var id = item.getAttribute("id");
for(var i=0; i<item.cells.length; i++)
record[record.length] = item.cells[i].innerText;
var style = "dialogHeight: 170px; dialogWidth: 340px; dialogTop: 458px; dialogLeft: 166px; edge: Raised; center: Yes; help: no; resizable: no; status: no;";
var val = window.showModalDialog("detail.html", record, style);
if(val != null)
{
item.cells[0].innerText = val[0];
item.cells[1].innerText = val[1];
item.cells[2].innerText = val[2];
}
}
这个鼠标滑过的处理,当然还可以用css来做。 这里使用了javascript 来操作html元素, 通过setAttribute 和 getAttribute 方法来获取 html 元素的属性。
在点击某一行的事件处理里, 使用 showModalDialog() , showModalDailog方法里的第二个参数是父窗体向子窗体传递的值。 这个值可以是数组也可以是对象。 然后它的返回值呢, 是在子窗体里通过window.returnValue 来传递的。 当然这里的传递手段有好多, 比如: 你可以在showModalDialog里请求一个aspx页面, 通过querystring来传递参数。 也可以通过Session来传递(不建议使用Session)。
Jossef Goldberg |
President & CEO |
555-0100 |
Suzan Fine |
Executive Assistant |
555-0101 |
Clair Hector |
COO |
555-0102 |
Anthony Chor |
Executive Assistant |
555-0103 |
Laura Jennings |
CFO |
555-0104 |
John Tippett |
Executive Assistant |
555-0105 |
Thom McCann |
Senior VP Production |
555-0106 |
Ken Bergman |
Executive Assistant |
555-0107 |
Mike Tiano |
Executive Assistant |
555-0108 |
Ashley Larsen |
Senior VP Sales & Mktg |
555-0109 |
Eric Lang |
Corporate Counsel |
555-0110 |
Linda Leste |
Treasurer |
555-0111 |
Ketan Dalal |
Secretary |
555-0112 |
Nate Sun |
A/P Manager |
555-0113 |
Andrew Dixon |
A/R Manager |
555-0114 |
Sean Chai |
Associate Council |
555-0115 |
Fukiko Ogisu |
International Liaison |
555-0116 |
Helmut Hornig |
North America Sales Manager |
555-0117 |
Jae Pak |
National Account Manager |
555-0118 |
Denise Smith |
National Account Manager |
555-0119 |
Kimberly Bowen |
Internal Sales Representative |
555-0120 |
Lani Ota |
Internal Sales Representative |
555-0121 |
Jeffrey Piira |
Internal Sales Representative |
555-0122 |
Jonathan Young |
Internal Sales Representative |
555-0123 |
Patricia Brooke |
Operations Manager |
555-0124 |
|
总结: 我们只要了解了web控件的最终html形式,那么通过强大的javascript控制,我们可以很轻松的实现我们所想要的效果。
分享到:
相关推荐
要在`DataGrid`底部添加一个合计平均行,通常需要在`ItemDataBound`事件中进行。首先,我们需要判断当前项是否为最后一项(即脚行),然后计算所有数值列的总和和平均值。这通常涉及到遍历`DataGrid`的所有行,获取...
在iOS开发中,数据展示是应用的核心功能之一,特别是在处理大量结构化数据时,数据网格(DataGrid)组件显得尤为重要。本资源提供了一个自制的iPhone DataGrid组件,它专为iOS应用设计,支持行列锁定功能,能有效...
VB6.0中DataGrid的应用详解 DataGrid控件是VB6.0中的一种强大且灵活的控件,能够显示一个Recordset对象的...开发者可以使用DataGrid控件来创建一个数据库应用程序,快速地配置控件,编辑数据和修改控件的外观和行为。
这个“自制 iPhone DataGrid 数据列表组件”是一个专门为iOS应用设计的自定义控件,它允许开发者创建类似电子表格的布局,支持行列锁定功能,极大地增强了数据展示的灵活性和用户体验。 在iOS开发中,标准的...
DataGrid是Flex中的一个核心组件,它允许开发者以表格的形式展示数据,适用于数据密集型的应用场景。 一、Flex DataGrid简介 Flex DataGrid组件是一个可滚动的表格,用于显示大量的结构化数据。它提供了诸如排序、...
在Visual Studio 2010中的C# WPF应用程序中,DataGrid控件是一个强大的工具,用于展示和编辑表格数据。本文将深入讲解如何使用DataGrid,涵盖数据绑定、增删改功能、分页实现以及样式设计四个核心部分。 ### 1. ...
DataGrid是WPF中的一个强大控件,它允许用户以表格的形式展示和编辑数据,非常适合用于数据密集型应用程序。 首先,我们需要了解WPF的基本架构。WPF是.NET Framework的一部分,提供了一种创建桌面应用程序的模型,...
3. 进行事件处理:主DataGrid的ItemDataBound事件是一个关键的事件,可以在其中获取到内部DataGrid需要的数据,并对其进行绑定。 4. 处理分页和排序:嵌套的DataGrid可能需要独立的分页和排序功能,这需要在事件处理...
ASP.NET DataGrid应用汇总
本文将围绕“Flex实践——Datagrid的打印预览与打印”这一主题,深入探讨如何在Flex应用中实现数据网格控件Datagrid的打印功能,包括预览和实际打印操作。 首先,Datagrid是Flex中一个非常重要的组件,它用于展示二...
【WPF之DataGrid应用】 在Windows Presentation Foundation (WPF) 中,DataGrid 是一个非常重要的控件,用于展示和编辑表格数据。本篇文章将详细讲解如何使用 DataGrid,包括数据绑定、增删改功能、分页实现以及...
- `DataGrid1_ItemDataBound`:这是一个服务器端事件,当 DataGrid 的每一项加载完毕时触发。在此事件处理程序中,可以为每一项添加 `onmouseover`、`onmousemove` 和 `onmouseout` 的事件处理函数。 - `...
在WPF(Windows Presentation Foundation)开发中,DataGrid控件是一种常用的数据展示工具,它可以方便地展示表格数据并支持各种交互操作。本话题主要探讨如何在DataGrid中自定义实现最后一行后面添加一个汇总行,这...
在WPF(Windows Presentation Foundation)开发中,DataGrid控件是一个强大的工具,常用于显示和操作结构化的数据。本文将详细介绍如何使用DataGrid实现行级数据的折叠和展开功能,以便在用户界面中以更直观的方式...
ASP.NET中的DataGrid控件是开发Web应用程序时用于展示数据的关键组件,特别是在处理与数据库相关的数据展示场景。熟练掌握DataGrid控件的应用技巧对于任何Web开发者来说都是至关重要的。 DataGrid控件允许以表格的...
在VB6.0编程环境中,"多种条件查询,Adodc1,DataGrid1的应用"是一个常见的主题,涉及数据库操作和用户界面展示。这个主题涵盖了如何利用ActiveX Data Objects (ADO)组件ADODC和DataGrid控件实现复杂的查询功能,并在...
在Flex中,DataGrid是一种常用的组件,用于展示和操作数据集。它允许用户以表格的形式查看和编辑数据,常用于创建数据驱动的应用程序。本文将深入探讨如何在Flex的DataGrid中实现每行的修改和删除功能,以及相关源码...
### VC++中DataGrid控件的使用 #### 一、引言 Microsoft ADODataControl 控件是 ActiveX ...通过这种方式,开发人员可以根据具体的应用场景灵活地控制 DataGrid 控件中列的显示效果,从而提高应用程序的用户体验。
1. **定义**:Datagrid是一种用户界面(UI)组件,它允许开发者在应用程序中展示数据库或数组中的数据。在.NET Framework中,尤其是在WinForms应用中,DataGrid控件是显示和操作结构化数据的标准工具。 2. **功能**...
### C# WPF中DataGrid的使用详解 #### 一、引言 DataGrid是WPF框架中的一个重要控件,用于展示数据集...掌握DataGrid的使用方法对于开发基于WPF的应用程序来说至关重要。希望本文能帮助读者更好地理解和使用DataGrid。