我会用Treeview做递归显示数据 也会用DataList 嵌套 DataList所以我在想一个问题 能不能用 DataList做递归呢 我主要想实现 主标题 有多个子标题 ,每个子标题有可能有多个子标题,依次递归!我写了一部分代码 请大家给我提提意见现在还没有实现这个功能 aspx<%@ Page Language="C#" AutoEventWireup="true" CodeFile="dhtest.aspx.cs" Inherits="dh_dhtest" %><!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 id="Head1" runat="server">
<title>dh</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="UTF-8" />
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DataList ID="DLTitle" runat="server" Width="100%" >
<ItemTemplate>
<asp:Label ID="lblid" runat="server" ></asp:Label>
</ItemTemplate>
</asp:DataList>
</div>
</form>
</body>
</html>csusing System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;public partial class dh_dhtest : System.Web.UI.Page
{
string strid = string.Empty;
dh _dh = new dh();
DataTable _dt = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
//dhtitlebind(); if (!Page.IsPostBack)
{
dhtitlebind();
_dt = _dh.selectDHTitle();//不多说了 就是查询数据库,数据库设计在下面
CreareTreeView();
}
} private void dhtitlebind()
{
_dt = _dh.selectDHTitle();
DLTitle.DataSource = _dt;
DLTitle.DataBind();
} private void CreareTreeView()//创建父节点
{
string strdhin = "0";
DataView dvList = new DataView(this._dt);
dvList.RowFilter = "dhin='" + strdhin + "'"; //过滤父节点 foreach (DataListItem item in DLTitle.Controls)
{
if (item.ItemType == ListItemType.Header)
{
Label lblids = (Label)item.FindControl("lblid");
foreach (DataRowView dv in dvList)
{
strid = dv["dhtid"].ToString(); //节点ID
lblids.Text = dv["dhtitle"].ToString(); //节点名称
CreateTreeNode(strid);
}
}
}
} private void CreateTreeNode(string strid)//创建子节点
{
DataView dvList = new DataView(this._dt);
dvList.RowFilter = "dhin='" + strid + "'"; //过滤父节点
foreach (DataRowView dv in dvList)
{
foreach (DataListItem item in DLTitle.Controls)
{
if (item.ItemType == ListItemType.Header)
{
Label lblids = (Label)item.FindControl("lblid"); strid = dv["dhtid"].ToString(); //节点ID
lblids.Text = dv["dhtitle"].ToString(); //节点名称
CreateTreeNode(strid);//递归 }
}
}
}
}
SQLCREATE TABLE [dbo].[dht] (
[dhtid] [int] IDENTITY (1, 1) NOT NULL ,
[dhtitle] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[dhtype] [int] NULL ,
[dhin] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[dhts] [int] NULL ,
[dhttime] [datetime] NULL
) ON [PRIMARY]
<head id="Head1" runat="server">
<title>dh</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="UTF-8" />
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DataList ID="DLTitle" runat="server" Width="100%" >
<ItemTemplate>
<asp:Label ID="lblid" runat="server" ></asp:Label>
</ItemTemplate>
</asp:DataList>
</div>
</form>
</body>
</html>csusing System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;public partial class dh_dhtest : System.Web.UI.Page
{
string strid = string.Empty;
dh _dh = new dh();
DataTable _dt = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
//dhtitlebind(); if (!Page.IsPostBack)
{
dhtitlebind();
_dt = _dh.selectDHTitle();//不多说了 就是查询数据库,数据库设计在下面
CreareTreeView();
}
} private void dhtitlebind()
{
_dt = _dh.selectDHTitle();
DLTitle.DataSource = _dt;
DLTitle.DataBind();
} private void CreareTreeView()//创建父节点
{
string strdhin = "0";
DataView dvList = new DataView(this._dt);
dvList.RowFilter = "dhin='" + strdhin + "'"; //过滤父节点 foreach (DataListItem item in DLTitle.Controls)
{
if (item.ItemType == ListItemType.Header)
{
Label lblids = (Label)item.FindControl("lblid");
foreach (DataRowView dv in dvList)
{
strid = dv["dhtid"].ToString(); //节点ID
lblids.Text = dv["dhtitle"].ToString(); //节点名称
CreateTreeNode(strid);
}
}
}
} private void CreateTreeNode(string strid)//创建子节点
{
DataView dvList = new DataView(this._dt);
dvList.RowFilter = "dhin='" + strid + "'"; //过滤父节点
foreach (DataRowView dv in dvList)
{
foreach (DataListItem item in DLTitle.Controls)
{
if (item.ItemType == ListItemType.Header)
{
Label lblids = (Label)item.FindControl("lblid"); strid = dv["dhtid"].ToString(); //节点ID
lblids.Text = dv["dhtitle"].ToString(); //节点名称
CreateTreeNode(strid);//递归 }
}
}
}
}
SQLCREATE TABLE [dbo].[dht] (
[dhtid] [int] IDENTITY (1, 1) NOT NULL ,
[dhtitle] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[dhtype] [int] NULL ,
[dhin] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[dhts] [int] NULL ,
[dhttime] [datetime] NULL
) ON [PRIMARY]
解决方案 »
- c# 仿美萍酒店管理系统
- 窗体中picturebox重叠时透明图片不透明的问题
- 麻烦帮教教我,谢谢。"INSERT INTO DGclub部门 (部门编号,部门名称,备注)VALUES("+ "'" + 部门编号.Text.Trim() + "',"+ "'" + 部门名称.Text.Trim() + "',"+ "'" + 备
- 请教
- 2007年情人节浪漫指南完全手册(超实用) 續
- C#中使combox1 列表中数据是abc.mdb中表abcd的第一列,怎么办ya
- !!有人用过XtraReports么?请问他支持运行时设计报表么?
- 怎么在关掉子窗口的时候,释放掉内存
- 求助:c#中参数的传递问题!!!!
- 如何创建一个不规则的半透明的窗体
- C#中利用多线程共同完成一个任务该如何操作?
- 为何C#空白的Windows应用程序移动窗体反应慢,重影明显
{
//第一级公司名称
Company_OrganizeInfo RootInfo = new Company_OrganizeInfo();
RootInfo.strName = CompanyName; CompanyOrganizeNode rootNode = new CompanyOrganizeNode(RootInfo, APP_User.CurrentUserReadOnlyCompany);
TreeView1.Nodes.Add(rootNode);
IList<Company_OrganizeInfo> list = Company_Organize.Search(-1, CompanyID, "", 0, -1, 1);
foreach (Company_OrganizeInfo Info in list)
{
CompanyOrganizeNode replyNode = new CompanyOrganizeNode(Info, APP_User.CurrentUserReadOnlyCompany);
replyNode.NavigateUrl = "";
replyNode.Target = "";
//replyNode.Expanded = false;
rootNode.ChildNodes.Add(replyNode);
if (Info.Chirld.Count > 0)
{
addChirld(Info.Chirld, replyNode);
}
}
} private void addChirld(IList<Company_OrganizeInfo> list, TreeNode parentNode)
{
foreach (Company_OrganizeInfo Info in list)
{
CompanyOrganizeNode replyNode = new CompanyOrganizeNode(Info, APP_User.CurrentUserReadOnlyCompany);
replyNode.NavigateUrl = "";
replyNode.Target = "";
//replyNode.Expanded = false;
parentNode.ChildNodes.Add(replyNode);
if (Info.Chirld.Count > 0)
{
addChirld(Info.Chirld, replyNode);
}
}
}
动态添加 1级节点 2级节点
Try
Getsouce()
Dim i As Integer
Dim applyvalue As String
Dim applygrade As String
Dim applymule As String
TreeView1.Nodes.Clear()
For i = 0 To dsPub.Tables(0).Rows.Count - 1
If ComboBox1.Text = dsPub.Tables(0).Rows(i)("object_id").ToString() Then
applyvalue = dsPub.Tables(0).Rows(i)("object_applyvalue").ToString()
applygrade = dsPub.Tables(0).Rows(i)("object_applygrade").ToString()
applymule = dsPub.Tables(0).Rows(i)("object_applymule").ToString()
End If
Next
TreeView1.Nodes.Add(ComboBox1.Text + " (" + (Double.Parse(applyvalue) * 100).ToString() + "%," + applygrade + "撰," + applymule + ")")
Inset_Tree_A(TreeView1.Nodes(0).Nodes, ComboBox1.Text)
TreeView1.ExpandAll()
Catch ex As Exception
Conn.ErrorMessage(ex.Message.ToString())
End Try
End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CrystalBtn1.Click
Try
Getsouce()
Dim i As Integer
Dim applyvalue As String
Dim applygrade As String
Dim applymule As String
TreeView1.Nodes.Clear()
For i = 0 To dsPub.Tables(0).Rows.Count - 1
If ComboBox1.Text = dsPub.Tables(0).Rows(i)("object_id").ToString() Then
applyvalue = dsPub.Tables(0).Rows(i)("object_applyvalue").ToString()
applygrade = dsPub.Tables(0).Rows(i)("object_applygrade").ToString()
applymule = dsPub.Tables(0).Rows(i)("object_applymule").ToString()
End If
Next
TreeView1.Nodes.Add(ComboBox1.Text + " (" + (Double.Parse(applyvalue) * 100).ToString() + "%," + applygrade + "撰," + applymule + ")")
Inset_Tree_A(TreeView1.Nodes(0).Nodes, ComboBox1.Text)
TreeView1.ExpandAll()
Catch ex As Exception
Conn.ErrorMessage(ex.Message.ToString())
End Try
End Sub这是好久以前写的,参考下吧!
<asp:TreeView ID="tree" runat="server"
onselectednodechanged="tree_SelectedNodeChanged" ></asp:TreeView>
</ItemTemplate>
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemIndex != -1)
{
TreeView tv = (TreeView)e.Item.FindControl("tree");
TreeNode node = new TreeNode();
node.Text = "1";
node.Value = "1";
tv.Nodes.Add(node);
}
}
递归绑定数据到treeview
用C#在datalist里面递归treeview倒是不错的建议
我想知道 如果我在datalist里面递归treeview后如何在每个treeview子节点下加一个datalist下面是我做的datalist嵌套 大家看看 我只是想在每个分类下添加子分类,用递归的方式
http://www.glcustomer.com.cn/dh/2楼 3楼的我没明白你们再说什么 我的QQ :285233757