在asp.net中创建分层下拉列表

时间:2011-09-30 10:01:09

标签: jquery asp.net

我正在asp.net 3.5.in中的电子商务网站上工作,我必须创建类别。类别存储为基于父ID的分级顺序。因为级别可以增加。

我的问题出现在添加/编辑类别页面中,其中类别必须以层次结构显示。

我在谷歌搜索有关在asp.net中创建分层下拉列表的任何帮助。但我没有得到它。我发现http://www.givainc.com/labs/mcdropdown_jquery_plugin.htm

如果我使用列表而不是下拉列表,我很困惑。 如何在保存时获取代码中所选项目的值。以及如何在类别编辑中选择项目。

请帮助解决这个问题。

2 个答案:

答案 0 :(得分:0)

为此你必须在我创建它之后使用递归,你可以检查我的代码。您可以根据自己的要求进行修改。

public void FillDDLOfParentCat()
        {
            DataTable dt = new DataTable();
            dt = dal.GetDataTable("SELECT * FROM Category_Master WHERE Parent='0' ORDER BY Name");
            ddl_category.Items.Add("--Select category--");
            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    ListItem li = new ListItem(dt.Rows[i]["Name"].ToString(), dt.Rows[i]["PK_ID"].ToString());
                    ddl_category.Items.Add(li);
                    PrintChild(Convert.ToInt32(dt.Rows[i]["PK_ID"].ToString()), "----");
                }
            }


        }
        public void PrintChild(int pk_id, string Space)
        {
            DataTable dt = new DataTable();
            dt = dal.GetDataTable("SELECT * FROM Category_Master WHERE Parent='" + pk_id + "' ORDER BY Name");

            string sp = new string(Space.ToCharArray());
            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {

                    ListItem li = new ListItem(sp + dt.Rows[i]["Name"].ToString(), dt.Rows[i]["PK_ID"].ToString());
                    ddl_category.Items.Add(li);


                    PrintChild(Convert.ToInt32(dt.Rows[i]["PK_ID"].ToString()), "----" + sp);

                }
            }
        }

答案 1 :(得分:0)

我不确定这是否适合您,但Telerik的RadComboBox非常灵活。这是我在RadComboBox中嵌入树视图的示例:

<telerik:RadComboBox ID="DropDownList1" runat="server" CausesValidation="false" Skin="Sunset" AutoPostBack="true" Width="500" Font-Size="12px" Font-Names="Verdana" OnClientDropDownOpened="onDropDownOpened">
    <ItemTemplate>
        <div style="padding:0px 0px 5px 5px;">
            <telerik:RadTreeView ID="TreeView1" runat="server" CausesValidation="false" Skin="Sunset" Font-Size="12px" Font-Names="Verdana" OnNodeClick="TreeView1_NodeClick" PersistLoadOnDemandNodes="true" ShowLineImages="true" OnClientNodeClicking="onTreeNodeClicking" />
        </div>
    </ItemTemplate>
    <Items>
        <telerik:RadComboBoxItem Text="" />
    </Items>
</telerik:RadComboBox>