2016-04-05 115 views
0

只是所以我不必再写出另一个示例来显示我正在查找的内容。 请参考example无法将类型'字符串'隐式转换为'system.web.mvc.selectlistgroup'

使用数据库中的表格示例,我想在嵌套的下拉列表中使用Category作为副标题(缺少更好的单词)。

所以这是我到目前为止有:

List<SelectListItem> lstAssignments = new List<SelectListItem>(); 

     using(var context = new databaseconnectionstring()/*fake connection string name*/) 
     { 
      List<table1> lstActivity = context.table1.Where(x => x.deleted == false).ToList(); 

      foreach(table1 activity in lstActivity) 
      { 
       SelectListItem item = new SelectListItem() { Text = activity.text, Value = activity.ID.ToString(), Group = activity.subcategory }; 
      } 

我收到Group = activity.subcategory下一个错误。

Cannot implicitly convert type 'string' to 'system.web.mvc.selectlistgroup'

subcategory财产被有意创建区分下拉列表(在引用链接一样Category

如何转换subcategory到它是什么要求?

回答

1

该错误告诉你到底需要做什么。 Group属性的类型为SelectListGroup,并且您正在向它传递一个字符串,从而导致错误。所以,放松一下,你只需要用你的字符串创建一个SelectListGroup的实例。 SelectListGroup,本身有一个Name属性,所以你应该能够做一些事情,如:

foreach(table1 activity in lstActivity) 
{ 
    var group = new SelectListGroup { Name = activity.subcategory }; 
    SelectListItem item = new SelectListItem() { Text = activity.text, Value = activity.ID.ToString(), Group = group }; 
} 
+0

我只是想出了这件事,并张贴我的答案..哈哈愚蠢的问题。谢谢你的回应。 –

+0

如何在foreach循环之前创建此SelectListGroup? 'SelectListGroup group = new SelectListGroup(){Name = context.table1 ./* stuck * /};' –

1

正如错误提到的,您试图为SelectListGroup属性提供字符串值。

你应该象下面这样初始化:

foreach(table1 activity in lstActivity) 
{ 
    SelectListItem item = new SelectListItem() 
     { 
      Text = activity.text, 
      Value = activity.ID.ToString(), 
      Group = new SelectListGroup() { Name = activity.subcategory } 
     }; 
} 

[编辑]

的改善将是在foreach之前宣布SelectListGroup S和它们相应分配到项目。这会创建更少的实例。

+0

我想通了这一点..哈哈哑题。谢谢你的回应。 –

0

嘿,对不起这个问题。我只是想出了它。

List<SelectListItem> lstAssignments = new List<SelectListItem>(); 

     using(var context = new fakeconnectionstring()) 
     { 
      List<table1> lstActivity = context.table1.Where(x => x.deleted == false).ToList(); 

      foreach(table1 activity in lstActivity) 
      { 
       SelectListGroup lstGroupCategories = new SelectListGroup() { Name = activity.subcategory }; 
       SelectListItem item = new SelectListItem() { Text = activity.text, Value = activity.ID.ToString(), Group = lstGroupCategories }; 
      } 
     } 
1

这是因为实际Group属性,您正试图设置期待一个SelectListGroup对象,而不是一个字符串,您的activity.subcategory是。

你需要做的是实际创建Group的实例,你的循环中它的Name属性设置为您的类别是什么:

SelectListItem item = new SelectListItem() { 
          Text = activity.text, 
          Value = activity.ID.ToString(), 
          Group = new SelectListGroup(){ Name = activity.subcategory }}; 
+0

我只是想通了,发布我的答案..哈哈愚蠢的问题。谢谢你的回应。 –

0
public List<SelectListItem> CarregarDropDownList(Centro modeloSelected = null, string selecttext = null) 
    { 
     var centro = GetAtivos().GroupBy(x => x.Centro1).Select(group => group.First()).OrderBy(x => x.Centro1).ToList(); 
     List<SelectListItem> lista = centro.Select(a => new SelectListItem() { Text = $"{a.Centro1}", Value = a.id_Centro.ToString(), Selected = (modeloSelected != null && modeloSelected.id_Centro == a.id_Centro) }).OrderBy(x => x.Text).ToList(); 
     //if (modeloSelected == null) 
      lista.Insert(0, new SelectListItem() { Value = "", Text = selecttext ?? "-Todos-" }); 

     return lista; 
    } 
相关问题