我想在下拉列表里显示如下效果:
大类
小类1
小类2
小类3
大类2
小类4
小类5
...
...
...
不知道该怎么实现,请高手留下数据库设计以及代码实现的思路!谢谢!!
大类
小类1
小类2
小类3
大类2
小类4
小类5
...
...
...
不知道该怎么实现,请高手留下数据库设计以及代码实现的思路!谢谢!!
解决方案 »
- 百度地图API
- 如何在页面上动态显示,程序已经执行到了哪一步?
- e.CommandArgument值总是为空,怎么一回事?
- 求jmail4.4Pro(急急!!!)
- 关于Visual Studio 2005 SP1安装的困惑
- 编译好的控件从工具箱中拖到也面上的时候显示"呈现控件出错 发生了未处理的异常 请求在此上下文中不可用"
- 谁能帮帮我呀????从XLS文件中读入数据到datagrid中,以下的代码既没有报错也没有读出数据。怎末办呀
- 怎樣使edit時禁止datagrid的分頁頁數選擇
- 江湖救急 C#程序命令行下怎么模拟ctrl+z
- 一个调试问题
- UpdatePanel alert问题
- 求解,子页面往父页面传值!!
/// <summary>
/// 递归生成
/// </summary>
private void BindDrpNode()
{
DataTable drs = _categoryBLL.QueryAll();//从数据库获取分类
foreach (DataRow dr in drs.Rows)
{
string id = dr["FullTrail"].ToString();
string name;
if (id.Length == 2)//是父类
{
name = dr["CategoryName"].ToString();
}
else //子类
{
//生成缩进空格
string strName = string.Empty;
for (int i = 0; i < id.Length; i++)
strName += Server.HtmlDecode(" "); name = strName + "|--" + dr["CategoryName"].ToString();
}
DDL.Items.Add(new ListItem(name, id));
BindDrpNode(id);
}
}
id pid name
/// <summary>
/// 下拉列表填充 递归
/// </summary>
/// <param name="dp">下拉列表</param>
/// <param name="Table">操作表</param>
/// <param name="Value">绑定的ID</param>
/// <param name="Text">绑定的Text</param>
/// <param name="WhereField">递归字段</param>
/// <param name="WhereValue">递归值</param>
/// <param name="WhereOther">其他条件</param>
/// <param name="SelectValue_Judge">是否有选定的值 0:没有;1:有</param>
/// <param name="SelectedValue">选定的ID</param>
/// <param name="HeadSelect_Judge">是否绑定前设定一个值 0:没有;1:有</param>
/// <param name="HeadSelectValue">设定的ID</param>
/// <param name="HeadSelectText">设定的Text</param>
public static void DropDownListFull(DropDownList dp, String Table, String Value, String Text, String WhereField, String WhereValue, String WhereOther, String SelectValue_Judge, String SelectedValue, String HeadSelect_Judge, String HeadSelectValue, String HeadSelectText)
{
if (HeadSelect_Judge == "1")
{
dp.AppendDataBoundItems = true;
dp.Items.Add(new ListItem(HeadSelectText, HeadSelectValue));
}
string strsql = "select " + Value + "," + Text + " from " + Table + " where " + WhereField + "=" + WhereValue + " and " + WhereOther;
DataSet ds = cldataset.ReTurnDataSet(strsql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
ListItem li = new ListItem();
li.Text = "╋ " + ds.Tables[0].Rows[i][Text].ToString();
li.Value = ds.Tables[0].Rows[i][Value].ToString();
dp.Items.Add(li);
DropDownListFull_Mx(dp, Table, Value, Text, WhereField, li.Value, WhereOther, "├");
}
if (SelectValue_Judge == "1")
{
dp.SelectedValue = SelectedValue;
}
}
public static void DropDownListFull_Mx(DropDownList dp, String Table, String Value, String Text, String WhereField, String WhereValue, String WhereOther, String HeadChar)
{
string strsql = "select " + Value + "," + Text + " from " + Table + " where " + WhereField + "=" + WhereValue + " and " + WhereOther;
DataSet ds = cldataset.ReTurnDataSet(strsql);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
ListItem li = new ListItem();
li.Text = HeadChar + " " + ds.Tables[0].Rows[i][Text].ToString();
li.Value = ds.Tables[0].Rows[i][Value].ToString();
dp.Items.Add(li);
string HeardChar1 = HeadChar + "─";
DropDownListFull_Mx(dp, Table, Value, Text, WhereField, li.Value, WhereOther, HeardChar1);
}
}
你可以去看看
http://www.cnblogs.com/webabcd/archive/2008/01/03/1024977.html
/// <summary>
/// 获取父ID
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (Session["u"] != null)
{
T_Users u = Session["u"] as T_Users;
string name = Session["u"].ToString();
string userid = bbs.GetByUserId(u.UserName.ToString());
string pid = DropDownList1.SelectedValue;//获取副版块的值
DataSet ds = fa.getfu(pid);
if (pid != "")
{
//是否有子版块
//DataSet ds = fa.getfu(pid);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
DropDownList2.Visible = true;//显示子版块的下拉控件
//DropDownList2.DataSource = fa.getfu("");
DropDownList2.DataSource = ds;
DropDownList2.DataTextField = "BigPageName";
DropDownList2.DataValueField = "PageId";
DropDownList2.DataBind();
DropDownList2.Items.Insert(0, new ListItem("--请选择子板块--", ""));
}
else
{
//如果没有子版块就隐藏子版块列表
DropDownList2.Visible = false;//否则设置为隐藏
} }
else
{
DropDownList2.Items.Clear();
DropDownList2.Items.Insert(0, new ListItem("--请选择子板块--", ""));
}
} }
BindDrpNode(id);
不懂这个。
哥,
session["u"]是什么啊?
public class DDLDepartment : DropDownList
{
public DDLDepartment()
{
bind(this, 0);
this.Items.Insert(0, new ListItem("==请选择==", ""));
} public void bind(DropDownList ddlDepartment, int parent)
{
IList<Department> deptlist = DepartmentBLL.SelectChild(parent);
foreach (Department dept in deptlist)
{
string text = new string(' ', dept.Depth - 1);
text += "└" + dept.DeptName;
ddlDepartment.Items.Add(new ListItem(text, dept.DeptId.ToString()));
bind(this, dept.DeptNo);
}
}
}
{
#region 测试数据
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("parentId", typeof(int)); DataRow row = dt.NewRow();
row["id"] = 1;
row["name"] = "一级";
row["parentId"] = 0;
dt.Rows.Add(row); row = dt.NewRow();
row["id"] = 2;
row["name"] = "科技";
row["parentId"] = 1;
dt.Rows.Add(row); row = dt.NewRow();
row["id"] = 3;
row["name"] = "沈阳";
row["parentId"] = 2;
dt.Rows.Add(row); row = dt.NewRow();
row["id"] = 4;
row["name"] = "二级";
row["parentId"] = 0;
dt.Rows.Add(row); row = dt.NewRow();
row["id"] = 5;
row["name"] = "美食";
row["parentId"] = 4;
dt.Rows.Add(row); row = dt.NewRow();
row["id"] = 6;
row["name"] = "哈尔滨";
row["parentId"] = 5;
dt.Rows.Add(row); row = dt.NewRow();
row["id"] = 7;
row["name"] = "技术";
row["parentId"] = 1;
dt.Rows.Add(row);
#endregion foreach (DataRow r in dt.Rows)
{
if (int.Parse(r["parentId"].ToString()) == 0)
{
int level = 0;
string text = r["name"].ToString();
ListItem item = new ListItem(text, r["name"].ToString());
this.DropDownList1.Items.Add(item); ChildLoad(r, dt, level+1);
}
} ListItem item1 = new ListItem("请选择选项");
this.DropDownList1.Items.Insert(0, item1);
} private void ChildLoad(DataRow dr, DataTable dt, int level)
{
foreach (DataRow r in dt.Rows)
{
if (int.Parse(r["parentId"].ToString()) == int.Parse(dr["id"].ToString()))
{
string text = "";
for (int i = 0; i < level; i++)
{
text += System.Web.HttpUtility.HtmlDecode(" "); //在dropdownlist的每一项前加空格
}
text += "├";
text += r["name"].ToString();
ListItem item = new ListItem(text, r["name"].ToString());
this.DropDownList1.Items.Add(item); ChildLoad(r, dt, level+1);
}
}
}
这是我接收的 用户登录的 session
你不用管 可以忽略 你看你需要的部分