如何在DataList里再套一个DataList

 
字体变小 字体变大
    一、新建一个aspx文件,在里面加入一个DataList


     第二步,编辑DataList的项模版
    第三步:在项模板的“ItemTemplate”里输入“订单号”、“客户”,并在“客户”后再添加一个DataList。
    第四步:编辑HTML文件,在“订单号”后面添加“<%# DataBinder.Eval(Container.DataItem, "订单ID") %>”;在“客户ID”后面添加“<% # DataBinder.Eval(Container.DataItem, "客户ID") %>”。在“<asp:DataList id="DataList2" runat="server">”和“</asp:DataList>”中间添加“<HeaderTemplate>订单详细</HeaderTemplate><ItemTemplate>产品编号:<%# DataBinder.Eval(Container.DataItem, "产品ID") %>; 单价:<%# DataBinder.Eval(Container.DataItem, "单价") %>; 数量:<%# DataBinder.Eval(Container.DataItem, "数量") %>; 折扣:<%# DataBinder.Eval(Container.DataItem, "折扣") %></ItemTemplate>”
    最后的DataList部分应该是:
< asp:DataList id ="DataList1" runat ="server">
     <ItemTemplate>
         <P> 订单号:<%# DataBinder.Eval(Container.DataItem, "订单ID") %><BR>
              客户:<%# DataBinder.Eval(Container.DataItem, "客户ID") %><BR>
              <asp:DataListid="DataList2"runat="server">
                   <HeaderTemplate>
                       &nbsp; &nbsp; 订单详细
                   </HeaderTemplate>
                   <ItemTemplate>
                       &nbsp; &nbsp; 产品编号:<%# DataBinder.Eval(Container.DataItem, "产品ID") %>;单价:<%# DataBinder.Eval(Container.DataItem, "单价") %>
                       数量:<%# DataBinder.Eval(Container.DataItem, "数量") %>; 折扣:<%# DataBinder.Eval(Container.DataItem, "折扣") %>
                   </ItemTemplate>
              </asp:DataList></P>
     </ItemTemplate>
</ asp:DataList >
    第五步:编辑cs文件。加入“using System.Data.OleDb;”的引用。然后在“private void Page_Load(object sender, System.EventArgs e)”的上面加上“protected OleDbConnection conn = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=C://Program Files//Microsoft Office//OFFICE11//SAMPLES//Northwind.mdb");”
    注意,这里用的是Office2003自带的Northwind.mdb数据库,如果安装的是Office2000的话,路径则为:C:/Program Files/Microsoft Office/OFFICE10/SAMPLES,可自行修改。

 

    第六步:在“private void Page_Load(object sender, System.EventArgs e)”里加上
string strSql = "select top 10 订单ID,客户ID from 订单 order by 订购日期 desc";
 
conn.Open();
OleDbDataAdapter myAdapter = new OleDbDataAdapter(strSql,conn);
DataSet ds = new DataSet();
myAdapter.Fill(ds,"ds");
conn.Close();
 
this .DataList1.DataSource = ds.Tables[0].DefaultView;
this .DataList1.DataBind();

 

    如此,绑定了第一个DataList。
    第七步:要绑定DataList里的那个DataList,还要回到aspx页面,选中DataList,在属性项的“ItemDataBound”上双击,然后会自动跳到cs页面

 

    第八步:在自动跳转的cs页面的“private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)”下加入以下代码:
DataRowView drv = (DataRowView)(e.Item.DataItem);
if (drv!=null)
{
     DataList DataList2 = (DataList)e.Item.FindControl("DataList2");
     if (DataList2!=null)
     {
         string strSql = "select * from 订单明细 where 订单ID = "+drv["订单ID"].ToString();
         conn.Open();
         OleDbDataAdapter myAdapter = new OleDbDataAdapter(strSql,conn);
         DataSet ds = new DataSet();
         myAdapter.Fill(ds,"ds");
         conn.Close();
         DataList2.DataSource = ds.Tables[0].DefaultView;
         DataList2.DataBind();
     }
}

 

    第九步:编译生成,再查看即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现DataList面嵌DataList的折叠菜单,可以按照以下步骤进行: 1. 在外层DataList的ItemTemplate一个内层DataList,并将其Visible属性设置为false。 2. 在外层DataList的ItemDataBound事件获取内层DataList的引用,并绑定内层DataList的数据源,最后将内层DataList的Visible属性设置为true。 3. 在外层DataList的ItemCommand事件处理内层DataList的展开和折叠,可以通过判断CommandName属性来确定是展开还是折叠,然后设置内层DataList的Visible属性即可。 下面是一个示例代码片段: ``` <asp:DataList ID="outerDataList" runat="server" OnItemDataBound="outerDataList_ItemDataBound" OnItemCommand="outerDataList_ItemCommand"> <ItemTemplate> <div> <a href="#" onclick="return false;" commandname="expand" class="expand">展开</a> <a href="#" onclick="return false;" commandname="collapse" class="collapse" style="display:none;">折叠</a> <asp:DataList ID="innerDataList" runat="server" Visible="false"> <ItemTemplate> <div><%#Eval("Name")%></div> </ItemTemplate> </asp:DataList> </div> </ItemTemplate> </asp:DataList> protected void outerDataList_ItemDataBound(object sender, DataListItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { DataList innerDataList = e.Item.FindControl("innerDataList") as DataList; innerDataList.DataSource = GetInnerDataListDataSource(); innerDataList.DataBind(); innerDataList.Visible = true; } } protected void outerDataList_ItemCommand(object source, DataListCommandEventArgs e) { if (e.CommandName == "expand") { DataList innerDataList = e.Item.FindControl("innerDataList") as DataList; innerDataList.Visible = true; e.Item.FindControl("expand").Visible = false; e.Item.FindControl("collapse").Visible = true; } else if (e.CommandName == "collapse") { DataList innerDataList = e.Item.FindControl("innerDataList") as DataList; innerDataList.Visible = false; e.Item.FindControl("expand").Visible = true; e.Item.FindControl("collapse").Visible = false; } } ``` 在这个示例代码,我们在外层DataList的ItemTemplate一个内层DataList,并且将其Visible属性设置为false。在外层DataList的ItemDataBound事件获取内层DataList的引用,并绑定内层DataList的数据源,最后将内层DataList的Visible属性设置为true。在外层DataList的ItemCommand事件处理内层DataList的展开和折叠,通过判断CommandName属性来确定是展开还是折叠,然后设置内层DataList的Visible属性即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值