public bool delCommodityType(int id)
{
ds = commodityTypeDAL.getCommodityTypeByParent(id);
if (ds.Tables[0].Rows.Count > 0)
{
foreach(DataRow dr in ds.Tables[0].Rows)
{
commodityTypeDAL.delCommodityType(Convert.ToInt32(id));
delCommodityType(Convert.ToInt32(dr["id"]));
}
}
if (commodityTypeDAL.delCommodityType(Convert.ToInt32(id)) > 0)
{
return true;
}
return false;
}我就不明白了 我调试的时候已经是跑到return true;这一步了,跑完后它又回到foreach里的commodityTypeDAL.delCommodityType(Convert.ToInt32(id));
郁闷啊,求解。
{
ds = commodityTypeDAL.getCommodityTypeByParent(id);
if (ds.Tables[0].Rows.Count > 0)
{
foreach(DataRow dr in ds.Tables[0].Rows)
{
commodityTypeDAL.delCommodityType(Convert.ToInt32(id));
delCommodityType(Convert.ToInt32(dr["id"]));
}
}
if (commodityTypeDAL.delCommodityType(Convert.ToInt32(id)) > 0)
{
return true;
}
return false;
}我就不明白了 我调试的时候已经是跑到return true;这一步了,跑完后它又回到foreach里的commodityTypeDAL.delCommodityType(Convert.ToInt32(id));
郁闷啊,求解。
解决方案 »
- asp.net mvc routes 路由定义
- ASP.NET程序发布到IIS上不能正常运行的问题? 急!!在线等
- 給發帖提問的人的一些建議
- 怎么样自定义验证控件 验证 DropDownList
- [求助] 加载配置文件时出错,对路径“c:\inetpub\wwwroot\web.config”的访问被拒绝。
- 删除'BB_SchoolInfo' 表中的字段HomeLeftPic,提示以下信息,怎么解决呢?
- 这段js alert(dom.xml)有什么作用?
- 请教:如何在asp.net程序中定义和使用自己的类和方法?
- 请问在哪能下载到sharpreader的源代码呢??
- 【文件下载的“琐碎”问题,第一次做,不是很在行】
- .net 怎么在根据条件查询其他网站数据 并在本站显示数据
- 急!!!!!!!!FF中div不兼容郁闷!
{
commodityTypeDAL.delCommodityType(Convert.ToInt32(id));
if(delCommodityType(Convert.ToInt32(dr["id"]))) return true;
public bool delCommodityType(int id)
{
ds = commodityTypeDAL.getCommodityTypeByParent(id);
if (ds.Tables[0].Rows.Count > 0)
{
foreach(DataRow dr in ds.Tables[0].Rows)
{
commodityTypeDAL.delCommodityType(Convert.ToInt32(id));
if(!delCommodityType(Convert.ToInt32(dr["id"])))
{
break;
}
}
}
if (commodityTypeDAL.delCommodityType(Convert.ToInt32(id)) > 0)
{
return true;
}
return false;
}
{
ds 此处要定义局部变量,不能用外面的变量= commodityTypeDAL.getCommodityTypeByParent(id);
if (ds.Tables[0].Rows.Count > 0)
{
foreach(DataRow dr in ds.Tables[0].Rows)
{
commodityTypeDAL.delCommodityType(Convert.ToInt32(id));
delCommodityType(Convert.ToInt32(dr["id"]));
}
}
if (commodityTypeDAL.delCommodityType(Convert.ToInt32(id)) > 0)
{
return true;
}
return false;
}
有点,因为你这里return true不一定是最外面的一个return true.
{
ds = commodityTypeDAL.getCommodityTypeByParent(id); if (ds.Tables[0].Rows.Count > 0)
{
foreach(DataRow dr in ds.Tables[0].Rows)
{
commodityTypeDAL.delCommodityType(Convert.ToInt32(id));
delCommodityType(Convert.ToInt32(dr["id"]));
}
}
if (commodityTypeDAL.delCommodityType(Convert.ToInt32(id)) > 0)
{
return true;
}
return false; }
因为LZ还没判断里面的就return 所以你的调试没用
public bool delCommodityType(int id)
{
//根据ID查询到信息,返回一个数据集
ds = commodityTypeDAL.getCommodityTypeByParent(id);
//如果有数据,就执行里面的操作,没有就跳过里面的循环,直接执行下面的操作
if (ds.Tables[0].Rows.Count > 0)
{
//如果ID是唯一,那么这里应该只有一条数据
//所以循环执行一次
foreach (DataRow dr in ds.Tables[0].Rows)
{
//先执行删除操作(不去管是否执行成功)
commodityTypeDAL.delCommodityType(Convert.ToInt32(id));
//在一次进入到delCommodityType方法,同样还是这个ID
delCommodityType(Convert.ToInt32(dr["id"]));
//如果上面的删除操作执行成功,那么这里返回的false,并且不可跳出循环,这里是一个死循环
}
}
//根据编号删除信息;
//不理解:上面明明查询不到数据,这一步肯定查询不到数据,所以返回的是false
if (commodityTypeDAL.delCommodityType(Convert.ToInt32(id)) > 0)
{
return true;
}
return false;
}
public bool delCommodityType(int id)
{
ds = commodityTypeDAL.getCommodityTypeByParent(id);
if (ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
commodityTypeDAL.delCommodityType(Convert.ToInt32(id));
delCommodityType(Convert.ToInt32(dr["id"]));//在这一步进入了递归,楼主看见的return只是调用这里面得其中一次而已,并不是最外层的return;所以这里return后还是会接着走上一层的foreach,如果能继续,当然commodityTypeDAL.delCommodityType(Convert.ToInt32(id));就会执行了。在有时候想直接跳出来,没有返回值的情况下,直接用的return,而不是return true或false;不要混淆了
}
}
if (commodityTypeDAL.delCommodityType(Convert.ToInt32(id)) > 0)
{
return true;
}
return false;
}
public bool delCommodityType(int id)
{
//根据ID查询到信息,返回一个数据集
ds = commodityTypeDAL.getCommodityTypeByParent(id);
//如果有数据,就执行里面的操作,没有就跳过里面的循环,直接执行下面的操作
if (ds.Tables[0].Rows.Count > 0)
{
//如果ID是唯一,那么这里应该只有一条数据
//所以循环执行一次
foreach (DataRow dr in ds.Tables[0].Rows)
{
//先执行删除操作(不去管是否执行成功)
commodityTypeDAL.delCommodityType(Convert.ToInt32(id));
//在一次进入到delCommodityType方法,同样还是这个ID
delCommodityType(Convert.ToInt32(dr["id"]));
//如果上面的删除操作执行不成功,那么这里永远不都会继续这个循环,并且不可跳出循环,这里是一个死循环
//如果删除操作执行成功,这里讲执行两次,最后返回false;
}
}
//根据编号删除信息;
//不理解:上面明明查询不到数据,这一步肯定查询不到数据,所以返回的是false
//更改理解:上面循环里面没有删除成功,则这里再一次删除,如果删除成功就返回true
if (commodityTypeDAL.delCommodityType(Convert.ToInt32(id)) > 0)
{
return true;
}
return false;
}
public bool delCommodityType(int id)
{
ds = commodityTypeDAL.getCommodityTypeByParent(id);
if (ds.Tables[0].Rows.Count > 0)
{
foreach(DataRow dr in ds.Tables[0].Rows)
{
commodityTypeDAL.delCommodityType(Convert.ToInt32(id));
delCommodityType(Convert.ToInt32(dr["id"]));
}
if (commodityTypeDAL.delCommodityType(Convert.ToInt32(id)) > 0)
{
return true;
} }
else
{
return false;
}
}
这样就可以了