2016-04-05 3 views
0

Только поэтому мне не нужно выписывать другой пример, чтобы показать, что я ищу. Пожалуйста, обратитесь к этому example.Невозможно неявно преобразовать тип 'string' в 'system.web.mvc.selectlistgroup'

Используя этот пример таблицы в базе данных, я хочу использовать Category как подзаголовком (за неимением лучшего слова) в гнездовой DropDownList.

Так вот, что я до сих пор:

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 собственность была целенаправленно создана, чтобы отличить DropDownList (такой же, как 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

Как создать эту группу SelectListGroup перед циклом foreach? 'SelectListGroup group = new SelectListGroup() {Name = context.table1 ./* stuck * /};' –

1

Как упоминается ошибка, вы пытаетесь предоставить значение String для свойства SelectListGroup.

Вы должны инициализации, как показано ниже:

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

[EDIT]

Улучшение было бы объявить SelectListGroup сек до Еогеаспа и назначить их элементы соответственно. Это создаст меньше экземпляров.

+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; 
    } 
Смежные вопросы