none
dropdownlist no lugar do actionlink, mais fazendo a mesma função RRS feed

  • Pergunta

  • O laytout padrão do mvc para o index dá um foreach na lista e cria uma td com 3 actionlist("Edit","details","delete").

    Ao invés de mostrar esses links queria mostra um dropdownlist com essas opções, mais se o usuário clicar em edit ele chama a view edit e assim por diante.


    Junior

    sexta-feira, 15 de abril de 2016 00:34

Respostas

  • Boa dia,

    Junior, fui analisar e realmente a solução apresentada precisa ser modificada para atender sua necessidade.
    Criei uma solução simples com (select), verifica se atende sua necessidade. É importante ressaltar que existe outras maneiras de fazer isso, no exemplo aqui utilizei apenas javascript.

    <script type="text/javascript">
        function Acao(idSelect) {
            var value = document.getElementById(idSelect).value;
            window.location = "NomeController/" + value;    }
    </script>

    @foreach (var item in Model)
    {
    <tr>
    <td>
    @Html.DisplayFor(modelItem => item.Nome)
    </td>
    <td>
    @Html.DisplayFor(modelItem => item.Endereco)
    </td>
    <td>
    @{var idSelect = "selectAcao" + @item.Id;}
    <select id="@idSelect" onchange="Acao('@idSelect');">
    <option>Selecione</option>
    <option value="/Edit/@item.Id" >Edit</option>
    <option value="/Details/@item.Id">Details</option>
    <option value="/Delete/@item.Id">Delete</option>
    </select>
    </td>
    </tr>
    }

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Marcado como Resposta Junior_luiz segunda-feira, 18 de abril de 2016 23:51
    segunda-feira, 18 de abril de 2016 11:50

Todas as Respostas

  • Bom dia

    Junior, segue um link com um exemplo:

    http://stackoverflow.com/questions/6088042/is-it-posible-do-have-html-actionlink-inside-a-dropdownlist-without-java-script

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    sexta-feira, 15 de abril de 2016 14:03
  • Silvaney testei ele aparece o dropdownlist e as opções mais simplesmente não vai para a view ficou assim meu codigo

    <td>
                        @Html.DropDownList(
                        "url",
                        new SelectList(new[]
                        {
                            new SelectListItem { Text = "Editar", Value = Url.Action("Edit", "CENTROCUSTO", new { id = item.ccu_id }) },
                            new SelectListItem { Text = "Detalhes", Value = Url.Action("Details", "CENTROCUSTO", new { id = item.ccu_id }) },
                            new SelectListItem { Text = "Excluir", Value = Url.Action("Delete", "CENTROCUSTO", new { id = item.ccu_id }) },
                        }, "Value", "Text"),
                        "-- Selecione ---",
                        new { id = "urlddl" }
    )
                    </td>



    Junior

    sábado, 16 de abril de 2016 01:19
  • Boa Noite,

    Você adicionou a função "JQuery" que também estava na página do "link"?

    $(function() {
        $('#urlddl').change(function() {
            var url = $(this).val();
            if (url != null && url != '') {
                window.location.href = url;
            }
        });
    });


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    sábado, 16 de abril de 2016 01:57
  • Adicionei
    <td>
                        @Html.DropDownList(
                        "url",
                        new SelectList(new[]
                        {
                            new SelectListItem { Text = "Editar", Value = Url.Action("Edit", "CENTROCUSTO", new { id = item.ccu_id }) },
                            new SelectListItem { Text = "Detalhes", Value = Url.Action("Details", "CENTROCUSTO", new { id = item.ccu_id }) },
                            new SelectListItem { Text = "Excluir", Value = Url.Action("Delete", "CentroCusto", new { id = item.ccu_id }) },
                        }, "Value", "Text"),
                        "-- Selecione ---",
                        new { id = "urlddl" }
    )
                    </td>
                    @*<td>
                        @Html.ActionLink("Editar", "Edit", new { id = item.ccu_id }) |
                        @Html.ActionLink("Detalhes", "Details", new { id = item.ccu_id }) |
                        @Html.ActionLink("Excluir", "Delete", new { id = item.ccu_id })
                    </td>*@
                </tr>
            }
            
        </table>
    <script>
        $(function () {
            $('#urlddl').change(function () {
                var url = $(this).val();
                if (url != null && url != '') {
                    window.location.href = url;
                }
            });
        });
    </script>


    Junior

    sábado, 16 de abril de 2016 12:48
  • Boa dia,

    Junior, fui analisar e realmente a solução apresentada precisa ser modificada para atender sua necessidade.
    Criei uma solução simples com (select), verifica se atende sua necessidade. É importante ressaltar que existe outras maneiras de fazer isso, no exemplo aqui utilizei apenas javascript.

    <script type="text/javascript">
        function Acao(idSelect) {
            var value = document.getElementById(idSelect).value;
            window.location = "NomeController/" + value;    }
    </script>

    @foreach (var item in Model)
    {
    <tr>
    <td>
    @Html.DisplayFor(modelItem => item.Nome)
    </td>
    <td>
    @Html.DisplayFor(modelItem => item.Endereco)
    </td>
    <td>
    @{var idSelect = "selectAcao" + @item.Id;}
    <select id="@idSelect" onchange="Acao('@idSelect');">
    <option>Selecione</option>
    <option value="/Edit/@item.Id" >Edit</option>
    <option value="/Details/@item.Id">Details</option>
    <option value="/Delete/@item.Id">Delete</option>
    </select>
    </td>
    </tr>
    }

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Marcado como Resposta Junior_luiz segunda-feira, 18 de abril de 2016 23:51
    segunda-feira, 18 de abril de 2016 11:50