在DataList中套GridView

使用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 "  style = " height: 123px " >

< TR bgColor = " aliceblue " >

< TD  class = " title "  style = " height: 25px " >

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

详细信息:
</ TD >

</ TR >

< TR >

< TD vAlign = " top "  style = " height: 133px " >

< 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事件

    }


}

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值