table name            superid   id 独家报道   0 55
海归创业   0 56
最新新闻   55 73
最新新闻   55 65要从数据库中读出后做2级菜单 dropdownlist 独家报道 
  |- 最新新闻 
  |- 最新新闻 
海归创业

解决方案 »

  1.   

    2级菜单简单啊..数据库字段有两个一个是父字段..一个子字段...不需要取循环判断...
    dropdownlist1.Items.Insert(i,"值");
      

  2.   

    DataSet ds = new DataSet();............得到dsDataTable dt1 = new DataTable();
    DataTable dt2 = new DataTable();
    dt1 = ds.Tables[0];
    dt2 = ds.Tables[0];
    for(int i=0;i<dt1.Rows.Count;i++)
    {
        if (dt1.Rows[i]["superid"].ToString().CompareTo("0") == 0)
        {
            DropDownList1.Items.Add(new ListItem(dt1.Rows[i]["name"].ToString(), dt1.Rows[i]["id"].ToString()));
            for (int j = 0; j < dt2.Rows.Count; j++)
            {
                if (dt1.Rows[i]["superid"].ToString().CompareTo(dt1.Rows[i]["id"].ToString()) == 0)
                {
                    DropDownList1.Items.Add(new ListItem(dt1.Rows[j]["name"].ToString(), dt1.Rows[j]["id"].ToString()));
                }
            }
        }
    }笨方法,数据量不大时可以使用
      

  3.   

    //*****你可能要修改一下你的表结构//****栏目是一张表
    //****栏目信息是一张表//****然后建立两表的关系,就可以做成你需要的效果了//****这里给出前台HTML代码
     <select id="selInfoColumr">
                <option value="-1">===请选择===</option>
                <asp:DataList ID="DListInfo" runat="server">
                    <ItemTemplate>
                        <option value='<%# DataBinder.Eval(Container.DataItem,"InfoID")%>'>+<%# DataBinder.Eval(Container.DataItem,"InfoTitel")%></option>
                        <asp:DataList ID="chileInfoList" runat="server" DataSource='<%# ((DataViewRow)Container.DataItem).Row.GetChildRows("myparent") %>'>
                            <ItemTemplate>
                                <option value='<%# DataBinder.Eval(Container.DataItem,"[\"InfoID\"]")%>'>&nbsp;&nbsp;&nbsp;&nbsp;|-<%# DataBinder.Eval(Container.DataItem,"[\"InfoTitle\"]")%>
                                </option>
                            </ItemTemplate>
                        </asp:DataList>
                    </ItemTemplate>
                </asp:DataList>
            </select>
      

  4.   

    既然从数据库里读出 那就设计表例:id      name       Parentid     1     独家报道     055
     2     海归创业     056
    055    最新新闻      1
    056    最新新闻      2
      

  5.   

    不好意思  刚搞错了 比较急  呵呵id      name       Parentid    055     独家报道     0
    056    海归创业      0
    001    最新新闻     055
    002    最新新闻     056
      

  6.   

    独家报道 
      |- 最新新闻 
     
    海归创业
      |- 最新新闻这样设计出来的是这个效果 
    id      name       Parentid    055     独家报道     0
    056    海归创业      0
    001    最新新闻     055
    002    最新新闻     056
    建议用TreeView
      

  7.   

    //*****加数据到树中
        public void InitColumnTreeView(ref Microsoft.Web.UI.WebControls.TreeView treview)
        {
            //****清空当前树
            treview.Nodes.Clear();        //*****邦定Javascript函数
            treview.Attributes.Add("ondblclick", "javascript:ReturnSelectNodeIndexValue();");        //****设置展开一级目录
            treview.ExpandLevel = 1;        Microsoft.Web.UI.WebControls.TreeNode TRPNode = null;        SystemColumn.TBSystemColumn mTBSystemColumn = new SystemColumn.TBSystemColumn();        DataSet DSet = (new SystemColumn.SystemColumn()).SystemColumnGetTreeNode(mTBSystemColumn);        foreach (DataRow dRow in DSet.Tables[0].Rows)
            {
                //****加载数据
                TRPNode = new Microsoft.Web.UI.WebControls.TreeNode();            TRPNode.Text = dRow["PNodeName"].ToString();
                TRPNode.NodeData = dRow["PNodeCode"].ToString() + "\t" + dRow["PNODENAME"].ToString();            //****加载节点
                treview.Nodes.Add(TRPNode);            //****获取节点编号
                string strPNodeCode = dRow["PNodeCode"].ToString();            //*****加载相应子节点
                InitColumnChileTreeNode(TRPNode, ref strPNodeCode);
            }    }    private void InitColumnChileTreeNode(Microsoft.Web.UI.WebControls.TreeNode TRPNode, ref string PNodeCode)
        {
            //****创建一个节点
            Microsoft.Web.UI.WebControls.TreeNode TRPChileNode = null;        DataSet DSet = (new SystemColumn.SystemColumn()).SystemColumnGetTreeNodeChile(PNodeCode);        foreach (DataRow dRow in DSet.Tables[0].Rows)
            {
                //*****加载相应数据
                TRPChileNode = new Microsoft.Web.UI.WebControls.TreeNode();            TRPChileNode.Text = dRow["PNodeName"].ToString();            TRPChileNode.NodeData = dRow["PNodeCode"].ToString() + "\t" + dRow["PNODENAME"].ToString();            //****添加子节点到根节点中
                TRPNode.Nodes.Add(TRPChileNode);            string strPNodeCode = "";
                strPNodeCode = dRow["PNodeCode"].ToString();            //*****递推下级节点
                InitColumnChileTreeNode(TRPChileNode, ref strPNodeCode);
            }
        }
      

  8.   

    name              superid  oerderid  id 
    独家报道   0 100 55
    海归创业   0 200 56
    海归置业   0 300 57
    海外风情   0 400 58
    海外移民   0 500 59
    出国考试   0 600 60
    教育展览   0 700 72
    最新新闻   55 201 73
    最新新闻   55 202 65
    海归空间   0 800 0加了个ORDERID,
    按OEDERID排序    For Each objectRow In data.Tables(0).Rows            If objectRow.Item("superclass") <> 0 Then
                    objectRow.Item("classname") = "   |- " + objectRow.Item("classname")
                End If
                newdata.Tables(0).Rows.Add(objectRow.ItemArray)
            Next用这个处理一下,,,
    呵呵,可以数据量小的时候使用,,,大家看看,,,数据量大的话,还有其他的方法麽谢谢啦,,,,,
      

  9.   

    表结构有问题,做个视图,生成表结构:本身编码,父编码,名称。这样无论多少级别的采单都不是问题
    将数据集放在DataSet 中后,通过DataRow[] dr=Ds.table[0].Rows.seletFiler("父级="父编码);递归过滤;即可得到结构。()