• 在DataGrid中创建一个弹出式Details窗口


    在DataGrid中创建一个弹出式Details窗口
    这篇文章来自DotNetJunkie的提议。他最初写信要求我们提供一个关于如何创建在DataGrid 中使用HyperLinkColumn的例子,可以在用户点击这一列后打开一个新窗口,显示出此列的详细内容。在此之前我们曾经通过email回答他们,他建议我们将这个方法加入他们的指南中,于是,就有了这篇文章。像我们原来的文章一样,它很简单,但是简单的包含代码的方法例可以更有效地启发开发者。
    这个例子包含两个WebForms和一个css文件(所有的代码都可以下载)--第一个WebForm包含一个展示从Northwind库中读出的产品列表的DataGrid,hyperlink的states设为“SeeDetails”,一旦这个链接被点击,JavaScript片段 Window.Open方法就会被调用.用户想获得的关于产品的ProductID做为参数包含在URL中.包含另一个DataGrid的第二个Webforms向用户列示他选中产品的所有具体细节。让我们来看一下WebForm1.asp 和WebFiorm1.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片段(注:你也可以简单地创建一个.js文件或在WebForm中使用<script></script>),javascript如此普及,所以这里不再详细讲解。功能上,它打开一个新的窗口,带ProductID查询字串的WebForm2.aspx,ProductID的值来自我们的数据源。我们可以看这两个文件:

    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对象,这个Reader从产品库中得到数据,css文件如下:



    StyleSheet1.css
    /* Style Sheet */
    BODY
    {
    margin-left: 0;
    margin-top:10;
    }
    .HEADERSTYLE
    {
    background-color: #3a6ea5;
    color: #FFFFFF;
    font-weight:bold;
    }

    .ITEMSTYLEDEFAULT
    {
    background-color: #C0C0C0;
    color: #000000;
    font-weight: bold;
    }

    .ITEMSTYLEHYPERLINK {
    background-color: #C0C0C0;
    color: #000000;
    font-weight: bold;
    }

    A:LINK
    {
    color: #000000;
    }

    A:VISITED
    {
    color: #000000;
    }

    A:HOVER
    {
    color: #3a6ea5;
    }




    这个指向details的超链在最右边一列,如图所示:

     

  • 相关阅读:
    动态生成 Excel 文件供浏览器下载的注意事项
    JavaEE 中无用技术之 JNDI
    CSDN 泄露用户密码给我们什么启示
    刚发布新的 web 单点登录系统,欢迎下载试用,欢迎提建议
    jQuery jqgrid 对含特殊字符 json 数据的 Java 处理方法
    一个 SQL 同时验证帐号是否存在、密码是否正确
    PostgreSQL 数据库在 Windows Server 2008 上安装注意事项
    快速点评 Spring Struts Hibernate
    Apache NIO 框架 Mina 使用中出现 too many open files 问题的解决办法
    解决 jQuery 版本升级过程中出现 toLowerCase 错误 更改 doctype
  • 原文地址:https://www.cnblogs.com/neozhu/p/100266.html
Copyright © 2020-2023  润新知