• 全部
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

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

leewei0920 2004-04-18 05:00:11
在ASP.NET中,如何实现DataList的互相嵌套。
简单地将一个DataList嵌套在另一个DataList中,无法实现功能。
那要怎么做?
请大家帮忙,指教,谢谢!
...全文
117 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
回复
相关推荐
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2004-04-18 05:00
社区公告
暂无公告