C#读取数据库问题,急

lianchon4 2012-08-17 04:56:52
动态树形结构的问题,用的测试数据是随机生成的,如果要从数据库读取该怎么修改呢?
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
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;
using System.Xml.Linq;
using System.Text;
using System.Data.OracleClient;

namespace DynLoadTree
{
public partial class Default : System.Web.UI.Page
{


#region Create Test Data

private DataTable DtTreeData
{
get
{
if (ViewState["DtTreeData"] == null)
ViewState["DtTreeData"] = GetAllDatas();
return (DataTable)ViewState["DtTreeData"];
}
}

/// <summary>
/// 生成测试数据
/// 实际操作中数据一般从数据库获取
/// </summary>
/// <returns></returns>
private DataTable GetAllDatas()
{
DataTable dt = new DataTable();//创建数据表DataTable对象
dt.Columns.Add("ID", typeof(int));//向Dtable中添加列
dt.Columns.Add("ParentID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns[0].AutoIncrement = true;
dt.Columns[0].AutoIncrementSeed = 1;
CreateChild(dt, 0, 2);
return dt;

}
catch (Exception ex)
{
Console.WriteLine("打开数据库错误:{0}", ex.Message);//如果发生异常,则提示出错 //如果有错误,输出错误信息
}
finally
{
conn.Close(); //关闭连接
}
return null;

}

/// <summary>
/// 生成节点的子孙节点
/// </summary>
/// <param name="dt"></param>
/// <param name="parentId"></param>
/// <param name="curLevel"></param>
private void CreateChild(DataTable dt, int parentId, int curLevel)
{
curLevel--;
if (curLevel >= 0)
{
for (int i = 0; i < 4; i++)
{
DataRow dr = dt.NewRow();//得到数据表行对象
dr[1] = parentId;//向行对象添加数据
dr[2] = String.Format("Tree Item_{0}", dt.Rows.Count);
dt.Rows.Add(dr);//将数据行对象添加到数据表中

CreateChild(dt, dt.Rows.Count, curLevel);
}
}
}

#endregion

protected void Page_Load(object sender, EventArgs e)
{
// 注册Ajax
AjaxPro.Utility.RegisterTypeForAjax(typeof(Default));

//创建根节点
NodeDyn root = new NodeDyn();
root.name = "马鞍山网格营销";
root.data = "0";
root.haveChild = true;

// 将根节点的Script数组输出到页面: var TREE_ITEMS =[['Dynamical Load Tree Root','',true,'0']];
ltScript.Text = root.GetScript(root);
}

#region For Ajax

/// <summary>
/// 根据父节点查找子节点并返回script数组
/// </summary>
/// <param name="parentId"></param>
/// <returns></returns>
[AjaxPro.AjaxMethod]
public string GetChild(string parentId)
{
StringBuilder sb = new StringBuilder();
DataRow[] drs = DtTreeData.Select(" ParentID=" + parentId);

sb.Append("[");
for (int i = 0; i < drs.Length; i++ )
{
NodeDyn node = GetNode(drs[i]);

sb.Append(node.GetString());
sb.Append(",");
}
return sb.ToString().TrimEnd(',') + "]";
}

private NodeDyn GetNode(DataRow dr)
{
NodeDyn node = new NodeDyn();

//树节点的显示内容
node.name = dr[2].ToString();

//树结点的数据信息,例如ID
node.data = dr[0].ToString();

//注册点击树结点的客户端事件,此处当点击树节点时就调用javascript函数OnTreeItemClick()
node.url = String.Format("OnTreeItemClick(\"{0}\")", node.name);

//该节点是否还有下级节点
node.haveChild = DtTreeData.Select("ParentID=" + dr[0].ToString()).Length > 0;

return node;
}

#endregion
}
}
...全文
65 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxbgg 2013-01-24
  • 打赏
  • 举报
回复
送分吧

62,046

社区成员

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

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

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

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