ASP.NET中DataList控件如何实现嵌套?

leewei0920 2004-04-18 05:00:11
在ASP.NET中,如何实现DataList的互相嵌套。
简单地将一个DataList嵌套在另一个DataList中,无法实现功能。
那要怎么做?
请大家帮忙,指教,谢谢!
...全文
139 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xubinhui 2004-05-07
  • 打赏
  • 举报
回复
另外本人还做了,DataList嵌套DataGrid等整理好在贴出来。
xubinhui 2004-05-07
  • 打赏
  • 举报
回复
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
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 StudyDotNet.DataList
{
/// <summary>
/// TreeButton 的摘要说明。
/// </summary>
public class TreeButton : System.Web.UI.Page
{
#region 控件申明区域
protected System.Web.UI.WebControls.DataList DataList1;
protected System.Web.UI.WebControls.LinkButton LinkButton1;
protected System.Web.UI.WebControls.DataList DataList2;
#endregion

#region Page_Load
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if (!Page.IsPostBack)
{
DataList1.DataSource = CreateDataSource();
DataList1.DataBind();
}
}

#endregion

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataList1.ItemCommand += new System.Web.UI.WebControls.DataListCommandEventHandler(this.DataList1_ItemCommand);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

#region 数据源
public DataTable CreateDataSource()
{
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("Sex");
dt.Columns.Add("Age");
dt.Rows.Add(new object[] {"顺治","男","45"});
dt.Rows.Add(new object[] {"康熙","男","7"});
dt.Rows.Add(new object[] {"雍正","男","62"});
dt.Rows.Add(new object[] {"乾隆","男","18"});
return dt;
}

#endregion

#region DataList1的事件
private void DataList1_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
bool booVisible;
if (e.CommandName == "One")
{
booVisible =((Panel)e.Item.FindControl("Panel1")).Visible;
((Panel)e.Item.FindControl("Panel1")).Visible =!booVisible;
}
}
public void DataList2_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
string strTem="";
if (e.CommandName == "Tow")
{
strTem += "二层按钮事件发生:<br>参数 = " + e.CommandArgument.ToString();
strTem += "<br>行号 = " + e.Item.ItemIndex.ToString();

DataTable dt = (DataTable)this.CreateDataSource();
strTem += "<br> 姓名 = " + dt.Rows[e.Item.ItemIndex]["Name"].ToString();

//输出结果
Response.Write(strTem);
//弹出对话框
strTem = strTem.Replace("<br>","\\r\\n");
Page.RegisterStartupScript("","<script language=javascript> alert('" + strTem + "')</script>");
}
}
#endregion

#region 2层方法
public void LinkButton1_Click(object sender, System.EventArgs e)
{
//<asp:LinkButton id="LinkButton2" OnClick="LinkButton_Click" runat="server">操作</asp:LinkButton>
//Html如上设置就可以调用本方法
Page.RegisterStartupScript("","<script language=javascript> alert('Tow')</script>");
}
#endregion
}
}
xubinhui 2004-05-07
  • 打赏
  • 举报
回复
我也找了好久,最后还是自己做了一个。
C#
这里拿出来共享!
刚做完,如果有问题,请发留言给我。
Html代码:
<%@ Page language="c#" Codebehind="TreeButton.aspx.cs" AutoEventWireup="false" Inherits="StudyDotNet.DataList.TreeButton" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>TreeButton</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<!--************************问题描述区************************-->
<table width="100%" border="0">
<tr>
<td style="COLOR: red" align="center"><b>DataList的嵌套 ---Tree</b></td>
</tr>
<tr>
<td><b>出处:</b>自己写的</td>
</tr>
<tr>
<td>
<b>描述:</b>
<ul>
1.只有两层!<br>
2.分别响应第一、第二层DataList中的按钮事件<br>
3.可以带参数响应<br>
4.可以显示|隐藏第二层<br>
</ul>
</td>
</tr>
</table>
<hr>
<!--************************问题描述区(完)************************-->
<form id="Form1" method="post" runat="server">
<asp:DataList id="DataList1" runat="server">
<ItemTemplate>
<table>
<tr>
<td align="left">
<asp:ImageButton id="ImageButton1" CommandName="One" runat="server"></asp:ImageButton>
</td>
<td align="left">
<asp:LinkButton id="Linkbutton1" CommandName="One" runat="server">
<%# DataBinder.Eval(Container.DataItem,"Name")%>
</asp:LinkButton>
</td>
</tr>
<tr>
<td align="left"></td>
<td align="left">
<asp:Panel ID="Panel1" Runat="server" Visible="False">
<asp:DataList id="Datalist2" runat="server" DataSource ='<%# CreateDataSource() %>' OnItemCommand="DataList2_ItemCommand">
<ItemTemplate>
<table>
<tr>
<td>
<%# DataBinder.Eval(Container.DataItem,"Name")%>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem,"Sex")%>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem,"Age")%>
</td>
<td align="right">
<asp:LinkButton id="LinkButton2" CommandName="Tow" CommandArgument="Value" runat="server">
操作
</asp:LinkButton>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
</asp:Panel>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
</form>
</body>
</HTML>
skylineforever 2004-04-26
  • 打赏
  • 举报
回复
当然数据量大且只读那就用datareader好了
gaolin 2004-04-26
  • 打赏
  • 举报
回复
帮你顶!!
leewei0920 2004-04-21
  • 打赏
  • 举报
回复
顶一下!
大家帮忙讨论啊!
leewei0920 2004-04-20
  • 打赏
  • 举报
回复
谢谢!
ASPXCN中实现的控件嵌套,我已经理解了。
不过,控件之间建立关系是通过DATASET的一个自带属性RELATION。
可是,DATASET比较占资源要怎么办?
请大家帮忙。
bitsbird 2004-04-18
  • 打赏
  • 举报
回复
见孟子老大网站dotnet.aspx.cc
Overriding 2004-04-18
  • 打赏
  • 举报
回复
http://aspxcn.com/dotnetbbs/View.aspx?fbId=17&Id=152613
Overriding 2004-04-18
  • 打赏
  • 举报
回复
http://aspxcn.com/dotnetbbs/View.aspx?fbId=17&Id=180090

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧