我正在asp.net 3.5.in中的电子商务网站上工作,我必须创建类别。类别存储为基于父ID的分级顺序。因为级别可以增加。
我的问题出现在添加/编辑类别页面中,其中类别必须以层次结构显示。
我在谷歌搜索有关在asp.net中创建分层下拉列表的任何帮助。但我没有得到它。我发现http://www.givainc.com/labs/mcdropdown_jquery_plugin.htm。
如果我使用列表而不是下拉列表,我很困惑。 如何在保存时获取代码中所选项目的值。以及如何在类别编辑中选择项目。请帮助解决这个问题。
答案 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>