当前位置: 首页 > 编程日记 > 正文

如何创建一个用弹出窗口来查看详细信息的超链接列

如何创建一个用弹出窗口来查看详细信息的超链接列
出处:www.dotnetjunkie.com

这篇文章来自于一位忠实的DotNetJunkie的建议,他最初发了一封email给我们,
要求我们给出一个例子来说明如何在DataGrid中设置一个当用户点击时能够弹出
显示其详细信息的新窗口的超链接列。在我们给他回复之前,他已经给我们提供了
一种方法,并建议我们写篇教程。于是有了这篇文章。这篇文章包含了两个webforms和一个css第一个webform包含了一个DataGrid,它显示了Northwind数据库中的一列产品还有写着"SeeDetails"的超链接。只要点击了这个链接,就会调用JavaScript的Window.Open方法来打开一个新的窗口。在一个Url中包含了用户想详细了解的产品的ProductId的Query String 参数。在第二个Webform里,是另一个DataGrid,它显示了用户选择的产品的所有详细信息。现在让我们来看看WebForm1.aspx和WebForm1.aspx.cs。

WebForm1.aspx 
<%@ Page language="c#" AutoEventWireup="false" Inherits="HowTos.DataGrid.PopupWindow.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
  <head>
   <LINK REL="stylesheet" TYPE="text/css" HREF="StyleSheet1.css"></LINK>
  </head>
   <body>
    <center>
        <form runat="server" ID="Form1">
            <asp:datagrid id="DataGrid1" runat="server" Font-Size="12" AutoGenerateColumns="False">
            <Columns>
            <asp:BoundColumn DataField= "ProductID" HeaderText= "Product ID" HeaderStyle-CssClass="HEADERSTYLE" ItemStyle-CssClass="ITEMSTYLEDEFAULT" />
            <asp:BoundColumn DataField="ProductName" HeaderText="ProductName" HeaderStyle-CssClass="HEADERSTYLE" ItemStyle-CssClass="ITEMSTYLEDEFAULT"/>
            <asp:hyperlinkcolumn DataTextFormatString="ShowDetails..." DataTextField="ProductID" DataNavigateUrlField="ProductID" DataNavigateUrlFormatString="javascript:varwin=window.open('WebForm2.aspx?ProductID={0}',null,'width=692,height=25');" HeaderText="See Details" HeaderStyle-CssClass="HEADERSTYLE" ItemStyle-CssClass="ITEMSTYLEHYPERLINK" />
            </Columns>
            </asp:datagrid>
        </form>
     </center>
   </body>
</HTML>


WebForm1.aspx.cs 
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient ;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace HowTos.DataGrid.PopupWindow
  {

public class WebForm1 : System.Web.UI.Page
    {
      protected System.Web.UI.WebControls.DataGrid DataGrid1;

#region User Defined Code

private void Page_Load(object sender, System.EventArgs e)
        {

if ( ! this.IsPostBack ) 
                this.BindData();

}

protected void BindData()
        {

SqlCommand cmd = new SqlCommand( "SELECT TOP 10 ProductID, ProductName FROM Products", con("Server=LocalHost; DataBase=Northwind; TRUSTED_CONNECTION=TRUE")); 
                this.DataGrid1.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                this.DataGrid1.DataBind();

}

protected SqlConnection con(System.String ConnectionString )
        {

SqlConnection c = new SqlConnection( ConnectionString );
                c.Open(); 
                return c;

}

#endregion

#region Web Form Designer generated code

override protected void OnInit(EventArgs e)
        {
               
                InitializeComponent();
                base.OnInit(e);
       
        }

private void InitializeComponent()
        { 
               
                this.Load += new System.EventHandler(this.Page_Load);
       
        }

#endregion

}
}

其实这两个文件没有什么难点,除了DataNavigateUrlFormatString,你注意到我直接把JavaScript window.open写在里面(注意:我也可以建一个js文件或者在WebForm中使用<script></script>,我直接写是为了简单)这个Javascript代码应该对大家来说很熟悉,所以我也不深入讨论它。它的作用就是在新窗口中打开WebForm2.aspx使用ProductId参数。这个值是来自我们的数据源。我们来看看webform2.aspx和webform2.aspx.cs。

WebForm2.aspx 
<%@Page language="c#" AutoEventWireup="false" Inherits="HowTos.DataGrid.PopupWindow.WebForm2" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
  <head>
    <title>Product Details</title>
    <LINK REL="stylesheet" TYPE="text/css" HREF="StyleSheet1.css"></LINK>
  </head>
    <body>
      <asp:DataGrid HeaderStyle-CssClass="HEADERSTYLE" ItemStyle-CssClass="ITEMSTYLEDEFAULT" runat="server" id="DataGrid1" Font-Size="8" Height="50" Width="675"></asp:DataGrid>
      <p align="center">
      <a href="JavaScript:window.close()">close window</a>
      </p>
    </body>
</html>
 
WebForm2.aspx.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient ;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace HowTos.DataGrid.PopupWindow
{

public class WebForm2 : System.Web.UI.Page
  {
    protected System.Web.UI.WebControls.DataGrid DataGrid1;

#region User Defined Code

private void Page_Load(object sender, System.EventArgs e)
    {
        if ( ! this.IsPostBack ) 
          this.BindData();
    }

protected void BindData()
    {
      SqlCommand cmd = new SqlCommand( "SELECT * FROM Products WHERE ProductID = @ProductID", con("Server=LocalHost; DataBase=Northwind; TRUSTED_CONNECTION=TRUE")); 
      cmd.Parameters.Add(new SqlParameter("@ProductID", SqlDbType.VarChar, 200));
      cmd.Parameters["@ProductID"].Value = Request["ProductID"].ToString();
      this.DataGrid1.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection);
      this.DataGrid1.DataBind();
    }

protected SqlConnection con(System.String ConnectionString )
    {

SqlConnection c = new SqlConnection( ConnectionString );
      c.Open(); 
      return c;

}

#endregion

#region Web Form Designer generated code

override protected void OnInit(EventArgs e)
    {

InitializeComponent();
      base.OnInit(e);

}

private void InitializeComponent()
    {

this.Load += new System.EventHandler(this.Page_Load);

}

#endregion

}
}
 
webform2.aspx也是相当的简单。其中只有一个绑定到SqlDataReader的DataGrid。SqlDataReader通过Query string参数获得产品的数据。

相关文章:

HashSet的使用

2019独角兽企业重金招聘Python工程师标准>>> 1.Set中元素是无序的 HashSet setnew HashSet(); set.add("a"); set.add("b"); set.add("c"); set.add("d"); System.out.println(set);//结果&#xff1a;[d,b,c,a]2.Set不允许…

python实现nginx图形界面管理

好久没有更新博客了&#xff0c;最近一直在学习python&#xff0c;于是&#xff0c;在有空闲的时间写下python视图界面管理nginx&#xff0c;写得不够好&#xff0c;不过希望能帮忙到其他童鞋&#xff0c;再次感叹&#xff0c;强大的python,不说了&#xff0c;上代码。 [rootlo…

小马智行获2.67亿美元新融资,估值超53亿美元

11月6日&#xff0c;小马智行&#xff08;Pony.ai&#xff09;宣布获得由加拿大安大略省教师退休基金会&#xff08;Ontario Teachers Pension Plan&#xff0c;OTPP&#xff09;旗下教师创新平台&#xff08;Teachers’ Innovation Platform, TIP&#xff09;领投总计2.67亿美…

DataSet导出CSV格式(ASP.NET,C#)

DataSet导出CSV格式(ASP.NET,C#)作者&#xff1a;NotMSN:notkinghotmail.comEmail:notssohu.com本文引用下面的 Microsoft .NET 框架类库命名空间&#xff1a;System.Data;System.Web.UI.WebControls;概要本文解决将DataSet导出到CSV格式问题、将DataGrid中的数据导出到CSV格式…

ArcEngine的ToolbarControl解析

转自Love Lyre原文 ArcEngine的ToolbarControl解析 ToolbarControlClass有三个主要的接口: IToolbarControl, IToolbarControl2, IToolbarControlDefault 其中,IToolbarControl2是IToolbarControl的新版本.而IToolbarControlDefault is a pure dispatch interface,始终是I…

在C#里实现DATAGRID的打印预览和打印

作者Blog&#xff1a;http://blog.csdn.net/qieyj/很多人都在论坛里问&#xff0c;如何实现DATAGRID的打印预览和打印&#xff0c;现在我就把这方面的源代码告诉大家。这段代码也花费了我1个晚上的时间&#xff0c;呵呵&#xff01;数据库是基于sql server2000自带的northwind。…

ORACLE SQL: 经典查询练手第二篇

本文使用的实例表结构与表的数据如下&#xff1a; scott.emp员工表结构如下&#xff1a; SQL> DESC SCOTT.EMP;Name Type Nullable Default Comments -------- ------------ -------- ------- -------- EMPNO NUMBER(4) 员工编号 ENAME…

第十三届光华工程科技奖名单揭晓!这40位专家和1个团体获奖

11月8日&#xff0c;第十三届光华工程科技奖揭晓仪式在北京隆重举行。工程科技是推动人类进步的发动机&#xff0c;是产业革命、经济发展、社会进步的有力杠杆。光华工程科技奖由中国工程院主管&#xff0c;目前已是第十三届&#xff0c;被誉为“中国工程界最高奖项”&#xff…

【C#公共帮助类】给大家分享一些加密算法 (DES、HashCode、RSA、AES等)

http://www.cnblogs.com/yuangang/p/5466068.html转载于:https://www.cnblogs.com/daming1233/p/6704562.html

MongoDB的备份(mongodump)与恢复(mongorestore)

为什么80%的码农都做不了架构师&#xff1f;>>> 不用多想&#xff0c;数据的备份无论什么时候都是必须的&#xff0c;尤其是重要数据。 MongoDB也提供了备份和恢复的功能&#xff0c;分别是MongoDB下载目录下的mongdump.exe和mongorestore.exe文件。 先介绍下命令…

Windows 2000/XP 注册表终极修改(转载)

Microsoft Windows 2000/XP 是一个强大的操作系统&#xff0c;为我们提供了以往Windows 9x从未有过的安全性能&#xff0c;可是你是否感觉某些地方的设置还不够呢&#xff0c;这里就对Windows 2000 的注册表进行一些修改来达到我们的目的。 一、修改开始菜单和任务栏 由于以往不…

百度CTO王海峰获“光华工程科技奖”,深耕自然语言处理近30年

11月8日&#xff0c;第十三届光华工程科技奖揭晓仪式在北京举行。该奖项被誉为“中国工程界最高奖项”&#xff0c;旨在对我国工程科技及管理领域做出杰出贡献的科学家、工程师进行表彰。百度CTO王海峰因其在人工智能领域、尤其是自然语言处理领域的卓越贡献&#xff0c;成为AI…

python自定义库文件路径

各有各的小烦恼&#xff0c;各有的小期待 这是人家私事&#xff0c;不要大嘴巴 在Pycharm中import whois时&#xff0c;总是失败 原因是安装了python3.x相关操作过程&#xff0c;将环境变量path中关于Python的配置c:\Python27和c:\Python27\Scripts都删除&#xff0c;pycharm中…

开机BIOS语言(转载)

开机自检时出现问题后会出现各种各样的英文短句&#xff0c;短句中包含了非常重要的信息&#xff0c;读懂这些信息可以自己解决一些小问题&#xff0c;可是这些英文难倒了一部分朋友&#xff0c;下面是一些常见的BIOS短句的解释&#xff0c;大家可以参考一下。 1.CMOS battery …

参与开源项目,结识技术大牛!CSDN“开源加速器计划”招募志愿者啦!

什么是“CSDN开源加速器计划”&#xff1f;纵观近 30 年的科技创新&#xff0c;开源已成为全球技术应用和行业数字化发展的基石&#xff0c;尤其最近几年&#xff0c;开源的商业化得到了极大突破&#xff0c;开源正在成为全球科技的强劲驱动力。在开源生态中&#xff0c;开发者…

破解CentOS的root密码(救援模式无密码)

开机后&#xff0c;在倒数读秒的时候按任意键、跳转画面后&#xff0c;再按E键&#xff0c;进入如下界面&#xff1a; 此时把光标定位到第二行&#xff0c;再按E键&#xff08;意为&#xff1a;在启动顺序里编辑这条命令&#xff09;&#xff0c;如下图&#xff0c;此时输入“空…

第九—十三单元练习

<<<第九单元练习>>>1.在desktop主机中建立用户westos&#xff0c;并设定其密码为westoslinux2.配置desktop中的sshd服务要求如下&#xff1a;*&#xff09;设定sshd服务只允许westos用户可以被访问使用*&#xff09;创建westos用户的key认证方式*&#xff09…

用 Java 训练深度学习模型,原来这么简单

作者 | DJL-Keerthan&Lanking来源 | HelloGitHub头图 | CSDN下载自东方IC前言很长时间以来&#xff0c;Java 都是一个很受企业欢迎的编程语言。得益于丰富的生态以及完善维护的包和框架&#xff0c;Java 拥有着庞大的开发者社区。尽管深度学习应用的不断演进和落地&#xf…

重装操作系统的20条原则(转载)

系统是否需重装&#xff0c;三条法则帮你忙&#xff1a; 如果系统出现以下三种情况之一&#xff0c;应该是你考虑重装系统的时候了&#xff1a;   1)系统运行效率变得低下&#xff0c;垃圾文件充斥硬盘且散乱分布又不便于集中清理和自动清理&#xff1b;   2)系统频繁出错&…

RKLayout

2019独角兽企业重金招聘Python工程师标准>>> RKLayout 是 iOS 上一个简单的布局管理器 转载:http://www.adobex.com/ios/source/details/00000978.htm 转载于:https://my.oschina.net/u/868244/blog/107107

【网络流24题】最小路径覆盖问题

【题目】1738: 最小路径覆盖问题 【题解】网络流 关于输出路径&#xff0c;因为即使有反向弧经过左侧点也一定会改变左侧点的去向&#xff0c;若没连向右侧就会被更新到0&#xff0c;所以不用在意。 mark记录有入度的右侧点&#xff0c;然后从没入度的右侧点开始把整条路径输出…

Windows的端口列表(转载)

按端口号可分为3大类&#xff1a; &#xff08;1&#xff09;公认端口&#xff08;Well Known Ports&#xff09;&#xff1a;从0到1023&#xff0c;它们紧密绑定&#xff08;binding&#xff09;于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如&#xff1a;80端…

有了图分析,可解释的AI还远吗?

GraphAI 更多新可能随着深度学习、机器学习等人工智能技术的逐级深入&#xff0c;企业对挖掘大数据的关联性去探索“隐藏”在背后的商业价值提出了更高的要求。尤其是&#xff0c;新一代人工智能技术正从“感知智能”迈向“认知智能”&#xff0c;让机器实现“理解、推理、决策…

智能公交GPS

蓝斯通信推出LZ8713B*-X车载终端。这款设备是按交通部JT/T794-2011《道路运输车辆卫星定位系统车载终端技术要求 》和JT/T808-2011《道路运输车辆卫星定位系统车载终端通讯协议及数据格式》技术标准进行设计的。 产品集GPS&#xff08;可选配BD2双模模块&#xff09…

数据化管理在餐饮业中的应用

一、为什么要重视数据化运营和管理&#xff1f; “从经营到管理&#xff0c;管理方向需要数据灯塔” 餐饮市场和社会各业具有相似之处&#xff0c;也有很明确的本质不同。 1、首先&#xff0c;餐饮市场不像电信、石油市场是垄断性的&#xff0c;餐饮市场充分透明&#xff0c;符…

1 元秒杀 1000+ 册爆款电子书,错过再等一年!

wow代码人们让钱包瑟瑟发抖的双十一已经来啦与此同时码不停蹄地向你奔赴而来的还有 CSDN 为你准备的???? 1 元秒杀 ????价值 3.5 万元的爆款电子书限时特惠&#xff0c;仅需 1 元你&#xff0c;准备好了吗仅限 500 人速领????????????错过悔10年系列好书一

关于XP进程问题(转载)

Smss.exe 会话管理子系统&#xff0c;它负责启动用户会话。这个进程是通过系统进程来初始化的&#xff0c;包括对已经正在运行的Winlogon&#xff0c;Win32&#xff08;Csrss.exe&#xff09;线程和设定的系统变量作出反映。在它启动这些进程后&#xff0c;它等待Winlogon或者C…

NoticeView

2019独角兽企业重金招聘Python工程师标准>>> NoticeView 是 iOS 的消息提醒组件&#xff0c;类似 TweetBot 的提醒。 转载:http://www.adobex.com/ios/source/details/00001068.htm 转载于:https://my.oschina.net/u/868244/blog/107344

elasticsearch 分片恢复经历了哪些步骤?

why 服务重启&#xff0c;或者与集群断网重连时&#xff0c;需要和集群当前的主分片的数据保持一致。 how 上图中&#xff0c;RecoverTarget 代表加入集群前想要同步数据的分片&#xff0c;RecoverSource代表当前集群中的正常分片。 同步过程本质上来说&#xff0c;就是通过拷贝…

Java 事件适配器 Adapter

事件适配器Adapters 在上一篇文章中&#xff1a; http://www.cnblogs.com/mengdd/archive/2013/02/06/2908241.html 第二个例子中&#xff0c;可以看到要实现相应的事件监听器接口&#xff0c;就必须实现其中的所有方法。 有的接口中包含多个方法&#xff08;多个事件处理器&am…