我的目的是建立无限级菜单.
数据库表有三个字段.分别是父ID,子ID,文字说明
这三个字段我先开始都用了文本类型,父ID和子ID都用GUID来标识.
可是在CS代码中用
ds.Relations.Add("NodeRelation", ds.Tables[0].Columns["DPID"], ds.Tables[0].Columns["ParentDPID"]);
这样的代码来建立父子关系的时候,在运行时生成这样的错误.
=======================================================
不能启用此约束,因为不是所有的值都具有相应的父值.
=======================================================
我仔细检查了数据库中的数据,没任何问题.
然后我试着把父ID和子ID字段都改为了INT类型,运行正常了,可以生成无限级菜单.
这里我想问,如果我还是想把字段设置为文本类型,用GUID来标识其ID,有没有办法正常使用的?
分有点少,我只有这些了,请有经验的人来帮个忙吧,谢谢了.
数据库表有三个字段.分别是父ID,子ID,文字说明
这三个字段我先开始都用了文本类型,父ID和子ID都用GUID来标识.
可是在CS代码中用
ds.Relations.Add("NodeRelation", ds.Tables[0].Columns["DPID"], ds.Tables[0].Columns["ParentDPID"]);
这样的代码来建立父子关系的时候,在运行时生成这样的错误.
=======================================================
不能启用此约束,因为不是所有的值都具有相应的父值.
=======================================================
我仔细检查了数据库中的数据,没任何问题.
然后我试着把父ID和子ID字段都改为了INT类型,运行正常了,可以生成无限级菜单.
这里我想问,如果我还是想把字段设置为文本类型,用GUID来标识其ID,有没有办法正常使用的?
分有点少,我只有这些了,请有经验的人来帮个忙吧,谢谢了.
解决方案 »
- 创建文件夹的问题
- 谁知道招聘网上的某个人的招聘信息是怎么和个人简历连接的?
- URLEncode引发Badrequest问题
- 请问 asp.net 能不能 对 多页的 tif 图像 进行 操作 ?????? 急!!!!!!!!!
- 高手进!!关于读配置问题~~~~
- 不能显示“http:\\localhost\”里面的正常内容
- 向前辈和高手求助(在线等)
- C#怎么实现同时类和接口的继承?
- ?怎样关闭客户段的WORD进程
- 遣责美国攻打伊拉克,问:如何对文件下载提供身份验证??
- WEB上显示EXCEL,别的SHEET打不开怎么办?只能打开一页!
- 了解WAS这个网站性能测试软件的进来看看,这里的数据是什么意思啊???????
如果那两个字段是文本类型的,就算把他们的数据都从GUID改为数字,运行时还是那个错误.
只能把类型改为INT的,数据为数字,运行才能正常!
还有没有办法解决啊..
因为这个库是以前的程序员建的.但是目前项目中有一TREEVIEW就是通过这个表结构生成的(只不过看不到代码实现).
为什么我在用ds.Relations.Add方法的时候就不行,我想应该是这个方法的问题.不支持数字以外的其它类型吧.
===============================================================
private void buildMenu()
{
OleDbConnection dbCon = new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("2.mdb"));
dbCon.Open(); OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM USER_DEPT_PLUS ORDER BY DPID", dbCon);
DataSet ds = new DataSet();
adapter.Fill(ds);
ds.Relations.Add("NodeRelation", ds.Tables[0].Columns["DPID"], ds.Tables[0].Columns["ParentDPID"]); foreach(DataRow dbRow in ds.Tables[0].Rows)
{
if(dbRow.IsNull("ParentDPID"))
{
ComponentArt.Web.UI.MenuItem newItem = CreateItem(dbRow);
Menu1.Items.Add(newItem);
PopulateSubMenu(dbRow, newItem);
}
}
} private void PopulateSubMenu(DataRow dbRow, ComponentArt.Web.UI.MenuItem item)
{
foreach (DataRow childRow in dbRow.GetChildRows("NodeRelation"))
{
ComponentArt.Web.UI.MenuItem childItem = CreateItem(childRow);
item.Items.Add(childItem);
PopulateSubMenu(childRow, childItem);
}
} private ComponentArt.Web.UI.MenuItem CreateItem(DataRow dbRow)
{
ComponentArt.Web.UI.MenuItem item = new ComponentArt.Web.UI.MenuItem();
item.Text = dbRow["Text"].ToString();
return item;
}
=======================================================================================
就是这样的代码..数据字段用INT就正常,用别的都不行,
出错是因为GUID之间没有约束