|
主题: 有兴趣讨论无限分类法吗
|
蓝鲸
职务:版主
等级:5
金币:42.1
发贴:2614
|
#162004/9/12 19:55:41
ridincal在上个帖子中说 引用: 蓝鲸在上个帖子中说 引用: ridincal的迭代方法,怪自己没好好学数学及数据结构,很想知道这方面的介绍。
for example:
private void AddTreeNode(DataNode dND)
{
foreach(DataNode dn in dND.ChildNodes)
{
TreeNode nd = new TreeNode();
nd.Name=dn.NodeName;
nd.OtherAttribute="";
......
dND.Nodes.Add(nd);
AddTreeNode(nd);
}
}
部分为伪码,要点是数据余操作分离,DataNode 数据结构需要根据数据表自行构建
非常谢谢,不过还是有些不懂。dND.ChildNodes是如何定义的? VS的TreeNode只能得到下一级的节点,好象没法遍历所有下属节点,不知你用什么方法?
非常大鱼
|
缺缺
职务:管理员
等级:8
金币:41.0
发贴:9620
|
#172004/9/13 2:53:52
图片如下:
private void InitTree(TreeNodeCollection Nodes,string ParentId)
{
DataView DV=new DataView();
DV.Table=DS.Tables["NodeTree"];
DV.RowFilter="ParentID="+ParentId;
TreeNode Node;
string intId;
foreach(DataRowView DVS in DV)
{
Node = new TreeNode();
Node.Text=DVS["Name"].ToString();
Node.ImageIndex = 0;
Nodes.Add(Node);
intId=DVS["Id"].ToString();
InitTree(Node.Nodes,intId);
}
}
编辑历史:[此帖最近一次被 allinhands 编辑过(编辑时间:2004-09-13 03:01:50)]
|
缺缺
职务:管理员
等级:8
金币:41.0
发贴:9620
|
#182004/9/13 2:56:11
数据来自蓝鲸兄的贴图 唉~~好不习惯那些SqlDataAdapter,DateSet,DateView.....
|
janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
|
#192004/9/13 7:36:04
蓝鲸在上个帖子中说 引用: ...... ISEnd可能名字有些误会,其实不是终结的意思。其实这个字段是分类下只有实体商品,不能再分类,因再分类可能类别不清晰,所以十脆说明以下不能再分。
如果是这样的话,商品应该放在另一个表中,而不是和目录混合在一起
|
=ridincal=
职务:管理员
等级:7
金币:20.0
发贴:5886
|
#202004/9/13 8:29:19
allinhands在上个帖子中说 引用: 数据来自蓝鲸兄的贴图 唉~~好不习惯那些SqlDataAdapter,DateSet,DateView.....
呵呵,这些东西可是ADO.Net的精髓,确实和M$的说法一致,It is not only the updated version of ADO! 其灵活性、适用性和强大的数据处理功能不是ADO能比的,还具有OLE DB、离线存取、XML数据交换等许多特性…… [纯技术观点,!AD ]
|
蓝鲸
职务:版主
等级:5
金币:42.1
发贴:2614
|
#212004/9/13 23:00:19
janlay在上个帖子中说 引用: 蓝鲸在上个帖子中说 引用: ...... ISEnd可能名字有些误会,其实不是终结的意思。其实这个字段是分类下只有实体商品,不能再分类,因再分类可能类别不清晰,所以十脆说明以下不能再分。
如果是这样的话,商品应该放在另一个表中,而不是和目录混合在一起
比如说,计算机\编程\VB,《VB6入门到精通》属于VB类,而不存放在编程或计算机类中。编程类ID中没有任何链接发书籍,VB类中有很多书,但不能再分类。如果编程中有书籍,可能在条目上要引起混乱。但在搜索是,如果是编程,那么VB、C++等就集中在一起。商品是另外一个表,用SortID与商品表外键链接。
非常大鱼
|
蓝鲸
职务:版主
等级:5
金币:42.1
发贴:2614
|
#222004/9/13 23:12:10
各位高见,真得益不浅。不过这些DataSet、DataView着实不好掌握。 还有这个DataGrid控件(System.Windows.Form.DataGrid),着实不好弄。比如说这个网格TextChanged事件,一个网格里编辑了,合计网格自动出现合计值。有时好象是这样了,但结果偏不会出现,但如果合计值不调用网格,而调用DataSet相应值,结果却好了。再者这个编辑中最后一行(不是正式行)最不好处理。真怕了,而且这方面的介绍太少,很想要关于DataGrid使用方面好的经验。
非常大鱼
|
蓝鲸
职务:版主
等级:5
金币:42.1
发贴:2614
|
#232004/9/20 2:04:29
我找到了一种使用ID路径简单的方法,不用在数据库中设置IDPath字段,只在ExNode再修改一个,增加一个私有变量: private string mIDPath; // 分类的ID组成的路径
public string IDPath
{
get
{
return mIDPath;
}
set
{
mIDPath = value;
}
} 并在添加Node时设置: // 添加到TreeView和数组
arrNode.Add(nd);
if (nd.Sort.ParentID == 0)
{
trvSort.Nodes[0].Nodes.Add(nd);
nd.IDPath = "root\\0";
}
else
{
for (int i = 1; i <= arrNode.Count; i++)
{
if (((ExNode)arrNode[i-1]).Sort.ID == st.ParentID)
{
pNode = (ExNode)arrNode[i-1];
break;
}
}
pNode.Nodes.Add(nd);
nd.IDPath = pNode.IDPath + "\\" + nd.Sort.ParentID.ToString();
} 接下去的查找到都已经容易实现了,比如选择一个节点,子节点的路径肯定包涵父节点的,只要搜索所有包涵父节点路径的,均为其子类。
非常大鱼
|
yenan
职务:普通成员
等级:1
金币:0.0
发贴:82
|
#242005/8/3 15:45:25
给个源码我好吗,越看越晕
|
{ 在指尖上绽放的花朵 }
职务:普通成员
等级:5
金币:14.0
发贴:3209
|
#252005/8/3 17:21:23
我现在的兼职就是在用 ASPX 开发东西的。。。
不过我主负责 XML + XSL 这部分。。。
最近也看了不少 C# 的代码。。。
第一个反应就是头大。。。唉。。。路还长啊。。。
|