如下面的结构,也是最常见的区域、树结构类型。
id name parentid
0 根节点 0
1 a 0
2 b 0
3 aa 1
4 bb 2
5 aaa 3数据集数量不确定。根据数据库动态取出。
根据以上数据,转换成以下格式存进datatable.
列1 列2 列3 列4
0 a aa aaa
0 b bb
id name parentid
0 根节点 0
1 a 0
2 b 0
3 aa 1
4 bb 2
5 aaa 3数据集数量不确定。根据数据库动态取出。
根据以上数据,转换成以下格式存进datatable.
列1 列2 列3 列4
0 a aa aaa
0 b bb
解决方案 »
- asp.net request.querystring[]想法
- membership 类
- 做了个死循环创建目录测试,网页已经关闭为什么程序还在执行还在创建目录
- 一个查询的问题,很着急!!!谢谢大家
- 页面打印问题。。。。我的页面里有许多表格。。怎么设置才能使表格不被“撕裂”打印。。。。。有没控件
- datagrid问题
- 关于datagrid显示数据的问题,急!!!!
- asp.net 程序开发时,不需要预编译
- DEVEXPRESS控件中的GRIDCONTROL 绑定数据不显示
- datagrid中典型的ItemCreated事件的事件处理程序该是怎样的?
- GridView动态生成的CommandField更新update按钮无反应,RowUpdating函数不执行任何操作
- 怎么在页面上生成一个类似流程图这样的东西?
其他兄弟、子节点的数量都不确定。
datatable的列数量就是根据上面 那棵树的根节点到最子节点的数量确定。。
1 a 0
2 b 0
3 aa 1
4 bb 2
5 aaa 3发现个问题,如果有这样几条记录,你的DataTable里怎么存放呢?6 aa1 3
7 aa2 3
8 bb1 2
9 bb2 2
public DataTable newDT=new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
theDT = new DataTable();
theDT.Columns.Add("id");
theDT.Columns.Add("name");
theDT.Columns.Add("parentid");
theDT.Rows.Add(new string[] {"0","根目录","0"});
theDT.Rows.Add(new string[] { "1", "a", "0" });
theDT.Rows.Add(new string[] { "2", "b", "0" });
theDT.Rows.Add(new string[] { "3", "aa", "1" });
theDT.Rows.Add(new string[] { "4", "bb", "2" });
theDT.Rows.Add(new string[] { "5", "aaa", "3" });
setNewTable("0", "根目录", 1);
foreach (DataRow row in newDT.Rows)
{
foreach (DataColumn col in newDT.Columns)
{
Response.Write(row[col.ColumnName].ToString()+ ",");
}
Response.Write("<br/>");
}
Response.End();
}
}
private void setNewTable(string parentID,string path, int leve)
{
if (leve > newDT.Columns.Count)
{
newDT.Columns.Add("Ex" + leve);
}
DataRow[] rows = theDT.Select("id<>'0' and parentid='" + parentID +"'");
if (rows.Length > 0)
{
foreach (DataRow row in rows)
{
setNewTable(row["id"].ToString(), path + "," + row["name"].ToString(), leve + 1);
}
}
else
{
DataRow row = newDT.NewRow();
string[] items = path.Split(',');
for (int i = 0; i < items.Length; i++)
{
row[i] = items[i];
}
newDT.Rows.Add(row);
}
}
inner join [Table] t2 on t1.name like t2.name + '%'
where t2.parentid=0
PIVOT(Min(t1.name) FOR t1.id IN([1],[2],[3])) AS PVT