日期:2014-05-19  浏览次数:20448 次

怎样将TreeView写入DataTable高手请帮忙
怎样将TreeView写入DataTable
表中有3个字段   strID,strText,strParentID,
strID,strText可以分别取TreeNode的ID属性和Text属性,strParentID想取父节点的TreeNode.ID可是不知道怎么实现大致代码如下:

foreach(TreeNode   tmpNd   in   Nds)
{
DataRow   dr   =   dt.NewRow();
dr[strID]         =   tmpNd.ID;
dr[strText]     =   tmpNd.Text;
dr[ParentID]   =   Nds.ToString();
dt.Rows.Add(dr);
FillNodes(dt,tmpNd.Nodes,tmpNd.ID,tmpNd.Text,tmpNd.ID);
}
}
可是这个得到的结果不正确啊,有没有高人帮我修改一下   谢谢了,如果分不够可以再+++

------解决方案--------------------
up一下
------解决方案--------------------
说说哪里不对,完整的代码写一下,还有Nds.ToString();能得到父节点的id吗
------解决方案--------------------
用当前节点的NodeData属性记录其父节点的ID,具体如下:

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
populatetree();

//建立dt用于保存strId, strText, strParentId;
createtable();
}
}


private static DataTable dt;
private void createtable()
{
DataColumn col;

dt = new DataTable();

col = new DataColumn( "strId ");
dt.Columns.Add(col);

col = new DataColumn( "strText ");
dt.Columns.Add(col);

col = new DataColumn( "strParentId ");
dt.Columns.Add(col);
}

private void fillnode(Microsoft.Web.UI.WebControls.TreeNodeCollection nodes)
{
foreach (Microsoft.Web.UI.WebControls.TreeNode node in nodes )
{
DataRow dr = dt.NewRow();

dr[0] = node.ID;
dr[1] = node.Text ;
dr[2] = node.NodeData;

dt.Rows.Add(dr);

fillnode(node.Nodes);
}
}

private void write()
{
for (int i = 0; i < dt.Rows.Count; i++)
{
Response.Write(i.ToString() + ". " + " " + dt.Rows[i][ "strId "] + " " + dt.Rows[i][ "strText "] + " " + dt.Rows[i][ "strParentId "] + " <br> ");
}
}

protected void Button1_Click(object sender, EventArgs e)
{
dt.Clear();

//取得所有节点信息保存到dt
fillnode(tree.Nodes);

//显示dt中所有数据
write();
}