很不幸,最近所作的事情似乎只是找一些网上现成的东东,然后看懂加以改进而已.不过对于一个菜鸟也想不出很多编程的方法.也许这也是成长所必须经历的阶段吧,努力ing
今天找到的是dropdownlist分级显示的一些东西,原帖同样难以辨别,只能默默感谢
原方法是采取递归的形式,水平有限不能从根本上解决性能问题,但对查询做了修正,只查询一次数据库即可.个人测试通过,可目前不显示父节点
/**/
/// <summary>
/// dropdownlist分级显示
/// </summary>
/// <param name="objDDL">下拉框控件id</param>
/// <param name="parentID">父id</param>
/// <param name="selectedID">选中项</param>
protected void DispDDL(DropDownList objDDL, string parentID, string selectedID)
... {
objDDL.Items.Clear();
DataTable dt = new DataTable();
string sql = "select * from Article_class";
dt = TreeViewOper.GetDS(sql).Tables[0];
if (dt == null || dt.Rows.Count == 0)
...{
objDDL.Items.Add(new ListItem("暂时无类别信息", ""));
}
else
...{
CreateLevel(objDDL, dt, parentID, selectedID);
}
}
/**/ /// <summary>
/// 生成下拉框项目
/// </summary>
/// <param name="DropDownList">下拉框控件id</param>
/// <param name="dt">数据表的datatable</param>
/// <param name="parentID">父id</param>
/// <param name="selectedID">选中项</param>
protected void CreateLevel(DropDownList DropDownList, DataTable dt, string parentID, string selectedID)
... {
string condition = " parent_ID=" + parentID + "";
string sort = " class_order asc";
DataRow[] rows = dt.Select(condition, sort);
foreach (DataRow myDataRow in rows)
...{
string AddToItemText = new String(' ', (myDataRow["class_path"].ToString().Split('|').Length - 1) * 2) + "└ ";
ListItem li = new ListItem(AddToItemText + myDataRow["class_name"].ToString(), myDataRow["class_id"].ToString());
if (li.Value == selectedID)
...{
li.Selected = true;
}
DropDownList.Items.Add(li);
this.CreateLevel(DropDownList,dt, myDataRow["class_id"].ToString(),selectedID);
}
}
/// dropdownlist分级显示
/// </summary>
/// <param name="objDDL">下拉框控件id</param>
/// <param name="parentID">父id</param>
/// <param name="selectedID">选中项</param>
protected void DispDDL(DropDownList objDDL, string parentID, string selectedID)
... {
objDDL.Items.Clear();
DataTable dt = new DataTable();
string sql = "select * from Article_class";
dt = TreeViewOper.GetDS(sql).Tables[0];
if (dt == null || dt.Rows.Count == 0)
...{
objDDL.Items.Add(new ListItem("暂时无类别信息", ""));
}
else
...{
CreateLevel(objDDL, dt, parentID, selectedID);
}
}
/**/ /// <summary>
/// 生成下拉框项目
/// </summary>
/// <param name="DropDownList">下拉框控件id</param>
/// <param name="dt">数据表的datatable</param>
/// <param name="parentID">父id</param>
/// <param name="selectedID">选中项</param>
protected void CreateLevel(DropDownList DropDownList, DataTable dt, string parentID, string selectedID)
... {
string condition = " parent_ID=" + parentID + "";
string sort = " class_order asc";
DataRow[] rows = dt.Select(condition, sort);
foreach (DataRow myDataRow in rows)
...{
string AddToItemText = new String(' ', (myDataRow["class_path"].ToString().Split('|').Length - 1) * 2) + "└ ";
ListItem li = new ListItem(AddToItemText + myDataRow["class_name"].ToString(), myDataRow["class_id"].ToString());
if (li.Value == selectedID)
...{
li.Selected = true;
}
DropDownList.Items.Add(li);
this.CreateLevel(DropDownList,dt, myDataRow["class_id"].ToString(),selectedID);
}
}
调用:
DispDDL(DropDownList1, TextBox1.Text,
"
0
"
);