Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

JoaoNascimento

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

Recommended Posts

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?

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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'

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.