Ir para o conteúdo
JoaoNascimento

Caixas de selecção com valores da Base de dados

Mensagens Recomendadas

JoaoNascimento

Outra duvida de um iniciante em Asp.Net.

O que eu queria fazer era, por exemplo no codigo em baixo em vez de ser uma caixa de texto para cada um, fosse uma caixa de selecção, pois esses valores encontram-se numa BD.

<asp:Panel ID="Panel3" runat="server">
            <h3>Problems</h3>
            <table border="0">
                <tr>
                    <td><%: Html.Label("Desviation") %></td>
                    <td><%: Html.EditorFor(model => model.Desviation.desviation1) %>
                    <%: Html.ValidationMessageFor(model => model.Desviation.desviation1) %></td>

                    <td><%: Html.Label("Indications & Warnings") %></td>
                    <td><%: Html.EditorFor(model => model.Warning.warning1) %>
                    <%: Html.ValidationMessageFor(model => model.Warning.warning1) %></td>

                    <td><%: Html.Label("CNL Reason") %></td>
                    <td><%: Html.EditorFor(model => model.CNL_Reason.abrv) %>
                    <%: Html.ValidationMessageFor(model => model.CNL_Reason.abrv) %></td>
                </tr>
            </table>
        </asp:Panel>

Já tentei fazer:

<select size="1" name="selectionar1">
    <%foreach (var items in Model)
      {  %>
        <option> <%: Html.DisplayFor(modelItem => items.CNL_Reason.abrv)%></option>
      <% } %>
</select>

Mas resulta no seguinte erro:

Error	5	foreach statement cannot operate on variables of type 'MissionBoard.Models.FazParte_Missao' because 'MissionBoard.Models.FazParte_Missao' does not contain a public definition for 'GetEnumerator'	

Alguém me pode recomendar alguma coisa?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoNascimento

Encontrei isto por ai:

<%= Html.DropDownList("NomeDoMeuCampo", new SelectList(MinhaLista, ItemDaMinhaListaASerSelecionado)) %>

O problema é que não estou a entender bem o que devo colocar nos parâmetros da SelectList.

A lista deve ser preenchida no controller?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bruno1234

Eu costumo fazer assim:

Html.DropDownListFor(model =>

            model.Dados.Propriedade,

            new SelectList(Model.ValoresPossiveis, "Value", "Desc", model.Dados.Propriedade),

            "Select ...")

Em que no Modelo que passo à view tenho as propriedades:

Dados -> Valores a apresentar.

Dados.Propriedade -> Valor a apresentar na dropdown.

ValoresPossiveis -> Classe com os valores possiveis da dropdown (em que Value é a prop. com o valor e Desc a prop. com a descrição.

Isto é só uma opção, podes também usar o ViewBag para passar os valores que quiseres, ou arranjares um helper próprio, é como for mais útil á tua aplicação.


Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoNascimento

Se não estou em erro no meu caso seria:

<td><%= Html.DropDownListFor(model => model.Desviation.desviation1, new SelectList(Model.Desviation, "Value", "Desc", Model.Desviation.desviation1))%></td>

Mas apresenta-me dois erros:

Error	5	The best overloaded method match for 'System.Web.Mvc.SelectList.SelectList(System.Collections.IEnumerable, string, string, object)' has some invalid arguments	
Error	6	Argument 1: cannot convert from 'MissionBoard.Models.Desviation' to 'System.Collections.IEnumerable'

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bruno1234

O que é que tem Model.Desviation?

Para funcionar da maneira que estás a fazer, tem que ser uma colecção com os valores possiveis da tua dropdown.

Tipo isto:

public IEnumerable<QualquerCoisa> Desviation { get; set; }

Em que a classe QualquerCoisa tem:

public string Value { get; set; }

public string Desc { get; set; }


Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.