程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 在DataList中套GridView

在DataList中套GridView

編輯:.NET實例教程
使用DataList控件中嵌套GridVIEw控件主要是為了解決數據分類綁定的問題。在做web應用程序開發時,特別是大型網站,後台處理數據時經常會遇到數據分類綁定。如兩個互有關聯的數據表同時按條件顯示在頁面。將GridView控件嵌套在DataList控件中,可以把分類信息顯示在DataList控件中,在GridVIEw控件中顯示對應具體的信息。
       在頁面上創建下面的示例。在頁面上添加一個DataList控件,並完成它的數據源配置,將SQL命令設置如下SELECT BianH,ZhuCYHM,XingM,XingB FROM T_YongH。進入到DataList控件的項模板編輯框中,在ItemTemplate模板編輯框中添加一個TextBox控件,將它綁定到ZhuCYHM字段上。接著在ItemTemplate模板編輯框添加GridVIEw控件。這樣就完成了前台代碼的設置。
 
對應Html代碼如下所示:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DataList_exam11.ASPx.cs" Inherits="DataList_exam11" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xHtml1-transitional.dtd">

 

<html XMLns="http://www.w3.org/1999/xHtml" >

<head runat="server">

<title>DataList_exam11</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<ASP:datalist id="DataList1"  Runat="server" ShowFooter="False" ShowHeader="False" OnItemDataBound="DataList1_ItemDataBound" >

<ItemStyle VerticalAlign="Top"></ItemStyle>

<ItemTemplate>

<TABLE id="Table1" cellSpacing="0" cellPadding="0" width="100%" border="0" >

<TR bgColor="aliceblue">

<TD class="title" >

用戶名:<asp:HyperLink id="ZhuCYHM" runat="server" Font-Bold="True" Target="_blank" Text='<%# Eval("ZhuCYHM") %>'></ASP:HyperLink><br />

詳細信息:</TD>

</TR>

<TR>

<TD vAlign="top" >

<ASP:GridView ID="GridView1" runat="server"  OnDataBinding="GridVIEw1_DataBinding">

<Columns>

<ASP:CommandFIEld ShowEditButton="True" />

</Columns>

</ASP:GridVIEw>

</TD>

</TR>

</TABLE>

</ItemTemplate>

</ASP:datalist>&nbsp;

 

</div>

</form>

</body>

</Html>

      接下來開始編寫後台代碼來實現具體嵌套功能。首先在Page_Load中實現DataList1控件的數據綁定,在此使用的是動態綁定數據,建立數據庫連接,然後將SELECT BianH,ZhuCYHM,XingM,XingB FROM T_YongH查詢出來的數據綁定到DataList1控件。最後使用DataList1_ItemDataBound事件實現在DataList控件中嵌套GridVIEw控件的功能。具體代碼如下所示:



public partial class DataList_exam11 : System.Web.UI.Page

...{

    protected void Page_Load(object sender, EventArgs e)

    ...{

      //聲明一個字符串

        string sConnectionString;

        //連接數據庫字符串,連接到XBMIS數據庫,用戶名是sa

        sConnectionString = " Data Source=.;Initial Catalog= XBMIS;User ID=sa; ";

        //創建SqlConnection數據庫連接對象

        SqlConnection Conn = new SqlConnection(sConnectionString);

        SqlDataAdapter Adapter = new SqlDataAdapter("SELECT BianH, ZhuCYHM, XingM, XingB FROM T_YongH", Conn);

        Conn.Open();

        DataSet ds = new DataSet();

        Adapter.Fill(ds, "yongh");

        DataList1.DataSource = ds.Tables["yongh"].DefaultVIEw;

        DataList1.DataBind();

    }

    protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)

    ...{

        //只在itemType=Item和AlternatingItem進行處理

        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

   ...{

            //取出此item數據

            DataRowView dr = (DataRowVIEw)e.Item.DataItem;

            //找到此item裡的GridVIEw,這裡是實現分類顯示數據的關鍵

            GridView GridView1 = (GridView)e.Item.FindControl("GridVIEw1");

            //根據此item的值查找ZhuCYHM和在記錄模板中顯示的注冊用戶名一樣的數據記錄,先要建立連接,然後填充數據

            SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog= XBMIS;User ID=sa;");

            SqlDataAdapter da = new SqlDataAdapter("SELECT BianH, ZhuCYHM, XingM, XingB FROM T_YongH where ZhuCYHM=@ZhuCYHM", conn);

            //添加ZhuCYHM參數

            da.SelectCommand.Parameters.Add("@ZhuCYHM", SqlDbType.NVarChar).Value = Convert.ToString(dr["ZhuCYHM"]);

            //給GridVIEw添加DataBinding事件

            DataSet ds = new DataSet();

            da.Fill(ds, "yongh");

            //綁定數據到GridVIEw1

            GridView1.DataBound += new EventHandler(GridVIEw1_DataBinding);

            GridVIEw1.DataSource = ds.Tables["yongh"];

            GridVIEw1.DataBind();

        }

 }

    protected void GridVIEw1_DataBinding(object sender, EventArgs e)

    ...{

        //必須生成GridVIEw1_DataBinding事件

    }

}
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved