下班走之前,问一个有点难度的问题!希望晚上的时候可以看到正确的答案

gdjlc 2008-11-11 06:38:28

SqlDataReader sdr = XX.Manager.BLL.Category.GetCategoryID(int.Parse(ddlCategory2.SelectedValue));
DropDownList1.DataSource = sdr;
DropDownList1.DataValueField = "categoryId";
DropDownList1.DataBind();
foreach (ListItem a in DropDownList1.Items)
{
if (ddlCategory1.SelectedValue == a.Value)//ddlCategory1为另一个下拉控件
{
Response.Write("<script language='javascript'>alert('不允许将一个类别移动到它的子类别下面!')</script>");
}
else
{
XX.Manager.BLL.Category.MoveCategory(int.Parse(ddlCategory1.SelectedValue), int.Parse(ddlCategory2.SelectedValue));//移动类别
}
}


最近在做一个无限级分类代码的移动类别时,碰到一个问题,现在 DropDownList1获取的是某一个ID下面的所有子分类ID,假如DropDownList1有1,5,7三个值,假如选择的ddlCategory1的值和DropDownList1相同时,也就是1,5,7里面的一个时,则弹出上面的提示信息:不允许将一个类别移动到它的子类别下面。。。
现在的问题是ddlCategory1的值和DropDownList1相同时,有弹出提示信息,但是 XX.Manager.BLL.Category....这个也执行了。
请教高手上面的代码应该改为什么比较好?先谢谢了!
...全文
155 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdjlc 2008-11-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jiang_jiajia10 的回复:]
加个continue;

[/Quote]
这样也不行。最后通过其它方法解决了。下面代码供有碰到这个问题的朋友参考:

foreach (ListItem a in DropDownList1.Items)
{
if (ddlCategory1.SelectedValue == a.Value)
{
flag1 = 0;
Response.Write("<script language='javascript'>alert('不允许将一个类别移动到它的子类别下面!')</script>");
}
else
{
flag1 = 1;
}
if (flag1 == 0)
flag2 = 1;
}
if (flag2 == 0)
{
XX.Manager.BLL.Category.MoveCategory(int.Parse(ddlCategory1.SelectedValue), int.Parse(ddlCategory2.SelectedValue));
}
gengwanshanreally 2008-11-11
  • 打赏
  • 举报
回复
up,learn
jiang_jiajia10 2008-11-11
  • 打赏
  • 举报
回复
加个continue;
gdjlc 2008-11-11
  • 打赏
  • 举报
回复
to lonely7345、oec2003
--------------------
加return; 或continue;都不行啊!请高手帮忙看一下。


gdjlc 2008-11-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cmxstudio 的回复:]
就像2楼说的,不明白这代码的意图,无限分类移动只要改变类的父ID不就行了吗?为啥还循环移动?
[/Quote]
无限分类移动还要考虑排除这样一种情况:就是父类别不能移动到它的子类别下面。
举个简单的常见例子来说:
C盘下有个文件夹名为“文件夹1”,“文件夹1”下面有子文件夹“文件夹2”和“文件夹3”.
这时你能把“文件夹1”移动到“文件夹2”或“文件夹3”下面吗?
cmxstudio 2008-11-11
  • 打赏
  • 举报
回复
就像2楼说的,不明白这代码的意图,无限分类移动只要改变类的父ID不就行了吗?为啥还循环移动?
oec2003 2008-11-11
  • 打赏
  • 举报
回复

SqlDataReader sdr = XX.Manager.BLL.Category.GetCategoryID(int.Parse(ddlCategory2.SelectedValue));
DropDownList1.DataSource = sdr;
DropDownList1.DataValueField = "categoryId";
DropDownList1.DataBind();
foreach (ListItem a in DropDownList1.Items)
{
if (ddlCategory1.SelectedValue == a.Value)//ddlCategory1为另一个下拉控件
{
Response.Write("<script language='javascript'>alert('不允许将一个类别移动到它的子类别下面!')</script>");
continue;
}
else
{
XX.Manager.BLL.Category.MoveCategory(int.Parse(ddlCategory1.SelectedValue), int.Parse(ddlCategory2.SelectedValue));//移动类别
}
}

bch520 2008-11-11
  • 打赏
  • 举报
回复
不明白你要做什么,循环没有中断,当然会往下执行了。
孤独侠客123 2008-11-11
  • 打赏
  • 举报
回复
if (ddlCategory1.SelectedValue == a.Value)//ddlCategory1为另一个下拉控件
{
Response.Write("<script language='javascript'>alert('不允许将一个类别移动到它的子类别下面!')</script>");
return;
}

62,046

社区成员

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

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

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

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