帮忙稍微改改递归
//得到分类表--------------------编程问答-------------------- 这样?
public static List<ProductSort> GetAll()
{
Database db = DatabaseFactory.CreateDatabase("SqlConnStr");
string sql = "select * from Street_ProductSort";
DbCommand com = db.GetSqlStringCommand(sql);
DataSet ds = db.ExecuteDataSet(com);
List<ProductSort> list = new List<ProductSort>();
foreach (DataRow row in GetProductTable().Rows)
{
list.Add(ConvertRow(row));
}
return list;
}
//递归自身 查询ParentID为id相对应的记录
private static void GetRowsByParentID(DataTable table, int id, ref string sresult)
{
//private static void GetRowsByParentID(DataTable table, int id, ref List<DataRow> resultrows)
//DataRow[] selectrows = table.Select("ParentId=" + id);
//if (selectrows == null || selectrows.Length == 0)
//{
// return;
//}
//else
//{
// foreach (DataRow row in selectrows)
// {
// resultrows.Add(row);
// GetRowsByParentID(table, Convert.ToInt32(row[0]), ref resultrows);
// }
//}
DataRow[] selectrows = table.Select("ParentId=" + id);
if (selectrows == null || selectrows.Length == 0)
{
return;
}
else
{
sresult += "<ul>\n";
foreach (DataRow row in selectrows)
{
sresult += "<li>" + row["Name"] + "<li>\n";
GetRowsByParentID(table, Convert.ToInt32(row[0]), ref sresult);
}
sresult += "</ul>\n<ul>";
}
}
//我想生成<ul><li></li></ul> 这种形式的代码,我这里生成的不正常,大家帮忙修改下。
sresult += "<ul>\n";
foreach (DataRow row in selectrows)
{
sresult += "<li>" + row["Name"];
GetRowsByParentID(table, Convert.ToInt32(row[0]), ref sresult);
sresult += "</li>\n";
}
sresult += "</ul>\n<ul>";
还是这样?
--------------------编程问答-------------------- 不对呢 --------------------编程问答-------------------- if (selectrows == null || selectrows.Length == 0)
sresult += "<ul>\n";
foreach (DataRow row in selectrows)
{
sresult += "<li>" + row["Name"] + "</li>\n";
GetRowsByParentID(table, Convert.ToInt32(row[0]), ref sresult);
}
sresult += "</ul>\n<ul>";
{
return;
}
else
{
foreach (DataRow row in selectrows)
{
sresult += "<ul>\n";
sresult += "<li>" + row["Name"] + "<li>\n";
GetRowsByParentID(table, Convert.ToInt32(row[0]), ref sresult);
sresult += "</ul>\n<ul>";
}
}
这样就可以了吧,你试一下
--------------------编程问答-------------------- 不行呢~你做做测试看看 --------------------编程问答-------------------- 那就是这样了:
if (selectrows == null || selectrows.Length == 0)
{
return;
}
else
{
foreach (DataRow row in selectrows)
{
sresult += "<ul>\n";
sresult += "<li>" + row["Name"] + "<li>\n";
sresult += "</ul>\n<ul>";
GetRowsByParentID(table, Convert.ToInt32(row[0]), ref sresult);
}
}
--------------------编程问答-------------------- 明显逻辑不对。 --------------------编程问答--------------------
你试了没有?你要的不就<ul><li></li></ul>, 还有什么要求?
最好给一个最终你想要的完整的输出结果,
你这个有歧义,
ul><li></li></ul>是一个记录的格式,还是所有记录的? --------------------编程问答-------------------- 表结构:
id Name parentid
1 a 0
2 b 1
3 c 1
4 d 0
你代码遍历看看
我要的结果为
<ul>
<li>a</li>
<ul>
<li>b</li>
<li>c</li>
</ul>
</ul>
<ul>
<li>d</li>
</ul> --------------------编程问答-------------------- <ul>
<li>a</li>
<ul>
<li>b</li>
<li>c</li>
</ul>
</ul>
<ul>
<li>d</li>
</ul> --------------------编程问答-------------------- if (selectrows == null || selectrows.Length == 0)
{
return;
}
else
{
if(selectrows.Count = 1)
sresult += "<ul>\n";
foreach (DataRow row in selectrows)
{
sresult += "<li>" + row["Name"] + "<li>\n";
GetRowsByParentID(table, Convert.ToInt32(row[0]), ref sresult);
}
if(selectrows.Count = 1)
sresult += "</ul>\n<ul>";
}
--------------------编程问答--------------------
逻辑上有错误,万一select.rows的数量不为1,那么连ul都无法出现了。
很感谢您的回复。谢谢。
逻辑上 --------------------编程问答-------------------- .............. --------------------编程问答-------------------- 楼主的代码没问题,就是最后多了个<ul>
sresult += "</ul>\n"; --------------------编程问答--------------------
sresult += "<ul>\n";
foreach (DataRow row in selectrows)
{
sresult += "<li>" + row["Name"] + "<li>\n";
}
GetRowsByParentID(table, Convert.ToInt32(row[0]), ref sresult);
sresult += "</ul>\n<ul>";
这样滴吧... --------------------编程问答-------------------- 晕,不好意思,看错了。。。
这样滴你看行不行..
这个方法改一哈,把table变成全局变量
GetRowsByParentID(int id, ref string sresult)
{
//这里面一个if(判断table!=null && table.count != 0)
sresult += "<ul>\n";
foreach (DataRow row in table.Rows)
{
if(row["Prentid"].Tostring() == id.Tostring())
{
sresult += "<li>" + row["Name"] + "<li>\n";
GetRowsByParentID(Convert.ToInt32(row[0]), ref sresult);
}
}
sresult += "</ul>\n<ul>";
}
--------------------编程问答--------------------
--------------------编程问答--------------------
sresult += "<ul>\n";
foreach (DataRow row in selectrows)
{
sresult += "<li>" + row["Name"] + "<li>\n";
GetRowsByParentID(table, Convert.ToInt32(row[0]), ref sresult);
}
sresult += "</ul>\n";
sresult += " <ul> \n ";--------------------编程问答-------------------- 上海创远急招C#程序员;急急急急急急急急急
foreach (DataRow row in selectrows)
{
sresult += " <li> " + row[ "Name "] + " <li> \n ";
GetRowsByParentID(table, Convert.ToInt32(row[0]), ref sresult);
}
sresult += " </ul> \n ";
最好能5.1前到岗;有效时间3个月
http://www.transcom.net.cn/cn/hr/
要求
1.擅长面向对象设计开发(主要技能);
2.有地理信息开发、无线通信行业经验最好;
补充:.NET技术 , C#