dropdownlistfor Hierarchy razor

时间:2016-03-16 10:40:47

标签: c# asp.net-mvc model-view-controller hierarchy dropdownlistfor

我相信这应该很容易。但我无法让自己尝试自己和谷歌搜索一天: - (

我使用的表格如下(见下文)。它包含字段ST_ID和字段ST_BELONGSTO。这实际上是存储我正在寻找的层次结构。因此,如果一行中有一个其他值,则在字段ST_belongsto中为零,这意味着它是topone的子类别。

CREATE TABLE [dbo].[tblDropdown](
    [ST_ID] [int] IDENTITY(1,1) NOT NULL,
    [ST_CODE] [nvarchar](50) NULL,
    [ST_DESCRIPTION] [nvarchar](50) NULL,
    [ST_VALUE] [nvarchar](50) NULL,
    [ST_ACTIVE] [bit] NULL,
    [ST_BELONGSTO] [int] NULL,
 CONSTRAINT [PK_tblDropdown] PRIMARY KEY CLUSTERED 
(
    [ST_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

我通过控制器用

填充视图中的下拉列表
ViewBag.ST_BELONGSTO = new SelectList(db.tblDropdown.Where(p => p.ST_CODE == "AR_GROUP1" && (p.IS_COMPANY == 0 || p.IS_COMPANY == i && p.ST_ACTIVE == true)), "ST_ID", "ST_DESCRIPTION");

这很好用。它显示了al记录。你认为有什么问题:-)。我想获得一个带有层次结构的下拉列表,因此它不会只显示值列表,例如

Categorie 1
   -->Subcat 2
   -->Subcat 5
 Categorie2
   -->Subcat 8
   -->Subcat 7
等等......

我找到了OPTGROUP,但这是不可行的,因为这些组也有可选择的ID。

我也在下面尝试过linq查询,但这只显示了具有子记录的记录。并没有显示子记录。

 var topics = db.tblDropdown;
                var types = db.tblDropdown;
                var query = from topic in topics
                            join type in types on topic.ST_ID equals type.ST_BELONGSTO
                            select new { Group = type.ST_ID, ID = topic.ST_ID, Description = topic.ST_DESCRIPTION };

                ViewBag.ST_BELONGSTO = new SelectList(query, "ID", "Description", "Group");

在视图中,下拉列表看起来像

<div class="list-left">
    @SeaFuy.ResourceProviders.LocalizationResourceProvider.Current.GetString("RE_TYPE1")
</div>
<div class="list-right">
@Html.DropDownList("ST_BELONGSTO", String.Empty) 
@Html.ValidationMessageFor(model => model.ST_BELONGSTO)
</div>

任何帮助都将深受赞赏

最好的问候,Marcel

0 个答案:

没有答案