none
Criar lista com dados tabela RRS feed

  • Pergunta

  • Boa tarde,

    Tenho a seguinte tabela

    TB Propriedade
    string Nome
    string Descrição
    Enum Necessário

    Necessito de criar uma lista com dados da tabela para depois apresentar na View details.
    Como poderei efectuar ?
    Podem dar uma ajuda.
    terça-feira, 20 de outubro de 2015 16:25

Respostas

  • Bom dia, dê uma olhada...

    classe ClienteModel

        public class ClienteModel
        {
            public int Id { get; set; }
            public string Nome { get; set; }
            public int Idade { get; set; }
        }

    Controller

            public ActionResult Listar()
            {
                var clientes = new List<ClienteModel>(); //Simulando os dados vindo da base de dados
                return View(clientes);
            }

    View ^/Views/Cliente/Listar.cshtml

    @model IEnumerable<MvcApplication1.Models.ClienteModel>
    
    @{
        ViewBag.Title = "Listar";
    }
    
    <h2>Listar</h2>
    
    <p>
        @Html.ActionLink("Create New", "Create")
    </p>
    <table>
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.Nome)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Idade)
            </th>
            <th></th>
        </tr>
    
    @foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Nome)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Idade)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
                @Html.ActionLink("Details", "Details", new { id=item.Id }) |
                @Html.ActionLink("Delete", "Delete", new { id=item.Id })
            </td>
        </tr>
    }
    
    </table>
    

    • Sugerido como Resposta SimorC domingo, 1 de novembro de 2015 22:53
    • Marcado como Resposta welington jrModerator sábado, 16 de dezembro de 2017 15:50
    quinta-feira, 22 de outubro de 2015 10:46

Todas as Respostas

  • Caso você já tenha seu dbContext criado, basta você fazer o seguinte no controller:

    private SeuContexto db = new SeuContexto();

    public ActionResult SuaView ()

    {

    return View (db.Propriedade.ToList());

    }

    terça-feira, 20 de outubro de 2015 18:49
  • Ainda não tenho o dbContext criado. Neste caso não teria interesse em criar.é possivél efectuar a operação sem criar o dbContext?
    terça-feira, 20 de outubro de 2015 21:43
  • Olá, bom dia! 

    Se você estiver usando Entity Framework é impossível listar esses dados sem criar um contexto (classe herdando o DbContext). O que você pode fazer é simular os dados criando uma lista com dados fictícios. 


    quarta-feira, 21 de outubro de 2015 02:45
  • Não estou a usar Entity Framework. Como poderei fazer?
    quarta-feira, 21 de outubro de 2015 11:07
  • Se for para listar dados de um banco, pode usar ADO.NET (SQL puro) 

    Como fazer com ADO:

    http://www.macoratti.net/08/11/c_adn_1.htm

    quarta-feira, 21 de outubro de 2015 16:36
  • Assim não consigo aplicar. A questão do meu project é que tem DTOs e repository. A partir dai tenho de criar uma lista com os dados da tabela.Tenho andado a ver mas não vejo que me ajude.Quem pode dar uma ideia?!
    quarta-feira, 21 de outubro de 2015 19:35
  • Fala parceiro!

    Vê se eu entendi...

    Você tem essa tabela, você quer dar um select na tabela, e trazer ela pro usuário numa ViewDetails?


    Leopoldo A. Nascimento (Ajude o máximo que puder, que assim será feito por você.) - Foi útil esta resposta? Então marque. ;)

    quarta-feira, 21 de outubro de 2015 22:33
  • é isso mesmo.o select já tenho definido no repository. agora pretendo fazer a list desses conteudos da tabela numa View.
    quarta-feira, 21 de outubro de 2015 22:43
  • Bom dia, dê uma olhada...

    classe ClienteModel

        public class ClienteModel
        {
            public int Id { get; set; }
            public string Nome { get; set; }
            public int Idade { get; set; }
        }

    Controller

            public ActionResult Listar()
            {
                var clientes = new List<ClienteModel>(); //Simulando os dados vindo da base de dados
                return View(clientes);
            }

    View ^/Views/Cliente/Listar.cshtml

    @model IEnumerable<MvcApplication1.Models.ClienteModel>
    
    @{
        ViewBag.Title = "Listar";
    }
    
    <h2>Listar</h2>
    
    <p>
        @Html.ActionLink("Create New", "Create")
    </p>
    <table>
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.Nome)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Idade)
            </th>
            <th></th>
        </tr>
    
    @foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Nome)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Idade)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
                @Html.ActionLink("Details", "Details", new { id=item.Id }) |
                @Html.ActionLink("Delete", "Delete", new { id=item.Id })
            </td>
        </tr>
    }
    
    </table>
    

    • Sugerido como Resposta SimorC domingo, 1 de novembro de 2015 22:53
    • Marcado como Resposta welington jrModerator sábado, 16 de dezembro de 2017 15:50
    quinta-feira, 22 de outubro de 2015 10:46
  • Dessa maneira eu já fiz,mas obtenho os dados todos. O que pretendo mesmo,é ao realizar o select,que tenho definido no repository, apresentar a lista desse select na view.Alguém tem uma ideia como se pode fazer?
    quinta-feira, 22 de outubro de 2015 11:13
  • Vi algo do genero definifo no controller

            private EquipmentEditViewModel GetAllList (int MdlId)// GetAllList[está definido no Hydrate]
            {
    
                List<PropertyTypeEditViewModel> _tipoPropriedade = new List<PropertyTypeEditViewModel>();
    
                var tipoPropriedade = _equipamentoReportingRepository.GetAll(MdlId).ToList(); //GetAll(MdlId)[select definido no Repository]
    
                tipoPropriedade.ForEach(delegate (TipoPropriedadeDto dto)
                    {
                        _tipoPropriedade.Add(new PropertyTypeEditViewModel
                        {
                            Nome = dto.Nome,
                            Descricao = dto.Descricao,
                            Obrigatorio = dto.Necessario,
    
    
                        });
                    });
            }

    Será que isto faz o pretendido? é que não consigo colocar a funcionar na View.

    quinta-feira, 22 de outubro de 2015 11:28
  • Então poste seu código atual do Controller e tente ser mais específico, por favor...vc disse 

    "apresentar a lista desse select na view

    Foi o que eu te apresentei, se não for isso, não estamos sabendo te ajudar, o que você precisa fazer DETALHADAMENTE?

    quinta-feira, 22 de outubro de 2015 11:30
  • Meu controller é :

      public class EquipmentController : AbstractAuthenticatedController
        { 
        private readonly ICommandProcessor _commandProcessor;
        readonly ITipoPropriedadeReportingRepository _tipoPropriedadeReportingRepository;
        readonly IEquipamentoReportingRepository _equipamentoReportingRepository;
        readonly ITipoEquipamentoReportingRepository _tipoEquipamentoReportingRepository;
        readonly IMarcaEquipamentoReportingRepository _marcaEquipamentoReportingRepository;
        readonly IModeloEquipamentoReportingRepository _modeloEquipamentoReportingRepository;
        
    
        #region Contructors
    
        public EquipmentController(ICommandProcessor commandProcessor, IEquipamentoReportingRepository equipamentoReportingRepository,
                                      ITipoEquipamentoReportingRepository tipoEquipamentoReportingRepository, IMarcaEquipamentoReportingRepository marcaEquipamentoReportingRepository,
                                      IModeloEquipamentoReportingRepository modeloEquipamentoReportingRepository,
                                      ITipoPropriedadeReportingRepository tipoPropriedadeReportingRepository)
        {
            this._commandProcessor = commandProcessor;
            this._tipoPropriedadeReportingRepository = tipoPropriedadeReportingRepository;
            this._equipamentoReportingRepository = equipamentoReportingRepository;
            this._tipoEquipamentoReportingRepository = tipoEquipamentoReportingRepository;
            this._marcaEquipamentoReportingRepository = marcaEquipamentoReportingRepository;
            this._modeloEquipamentoReportingRepository = modeloEquipamentoReportingRepository;
               
           
    
        }
    
        #endregion
    
        #region Methods
    
        #region Actions
    
        public ActionResult Index()
        {
            return View(_equipamentoReportingRepository.GetPagedResult(1).ToPagedResultViewModel());
        }
    
        public ActionResult Search(int page)
        {
            return PartialView("List", _equipamentoReportingRepository.GetPagedResult(page).ToPagedResultViewModel());
        }
    
        public ActionResult Create()
        {
                EquipmentEditViewModel model = new EquipmentEditViewModel();
              
                   
                
    
                return View(Hydrate(model));
    
            }
    
    
    
            IEnumerable<SelectListItem> GetAllPropertyTypes(int selectedItem)
        {
            return _tipoEquipamentoReportingRepository.GetAll()
                 .Select(x => new SelectListItem
                 {
                     Value = x.Id.ToString(),
                     Text = x.Codigo,
                     Selected = x.Id == (selectedItem)
                 });
        }
    
        IEnumerable<SelectListItem> GetAllEquipmentBrand(int selectedItem)
        {
            return _marcaEquipamentoReportingRepository.GetAll()
                 .Select(x => new SelectListItem
                 {
                     Value = x.Id.ToString(),
                     Text = x.Codigo,
                     Selected = x.Id == (selectedItem)
                 });
        }
    
        IEnumerable<SelectListItem> GetAllEquipmentModel(int selectedItem)
        {
            return _tipoPropriedadeReportingRepository.GetAllModelos()
                 .Select(x => new SelectListItem
                 {
                     Value = x.Id.ToString(),
                     Text = x.Codigo,
                     Selected = x.Id == (selectedItem)
                 });
        }
    
    
       IEnumerable<SelectListItem> GetAllUNID(int selectedItem)
       {
                return _equipamentoReportingRepository.GetAllUNID()
                     .Select(x => new SelectListItem
                     {
                         Value = x.Id.ToString(),
                         Text = x.UnCodigo,
                         
                     });
        }
    
    
        IEnumerable<SelectListItem> GetAllDescritivo(string selectedItem)
        {
                return _equipamentoReportingRepository.GetAll()
                     .Select(x => new SelectListItem
                     {
                         Value = x.Id.ToString(),
                         Text = x.Descritivo,
                         
                     });
         }
    
    
            IEnumerable<SelectListItem> GetAllObrigatorio(Resources.Enum.Enum selectedItem)
        { 
                return _equipamentoReportingRepository.GetAllObrigatorio()
                     .Select(x => new SelectListItem
                     {
                         Value = x.Id.ToString(),
                         Text = x.Descritivo,
    
    
                     });
         }
    
         IEnumerable<SelectListItem> GetAllOrdem(int selectedItem)
         {
                return _equipamentoReportingRepository.GetAllOrdem()
                     .Select(x => new SelectListItem
                     {
                         Value = x.Id.ToString(),
                         Text = x.Descritivo,
                         
    
                     });
         }
    
            private List GetPropriedades(string[] Values)
            {
                var propriedade = new List<TipoPropriedadeDto>()
                {
                    new TipoPropriedadeDto() { Id = 1, Descritivo = _equipamentoReportingRepository.GetAllDescritivo()  },
    
                };
            }
    
    
            public ActionResult Details(int id)
        {
            return View(_equipamentoReportingRepository.GetBy(id));
        }
    
        [HttpPost, ValidateAntiForgeryToken]
        public ActionResult Create(EquipmentEditViewModel model)
        {
            if (ModelState.IsValid)
            {
                List<string> items = new List<string>();
                try
                {
                        _commandProcessor.Process(new CreateEquipamentoCommand(model.TeId, model.MrcId, model.MdlId, model.Codigo, model.Designacao, model.Observacoes,model.Descritivo));
                    ShowSuccessMessage(string.Format(Success.RECORD_CREATED, Label.EQUIPMENT));
                    return RedirectToAction<EquipmentController>(_controller => _controller.Index());
                }
                catch (RecordAlreadyExistsWithSameKeyException)
                {
                    ShowErrorMessage(string.Format(Error.RECORD_WITH_SAME_KEY, Label.EQUIPMENT));
                }
                catch (Exception)
                {
                    ShowErrorMessage(Error.RECORD_CREATE_ERROR);
                }
            }
    
            return View(Hydrate(model));
        }
    
        public ActionResult Edit(int id)//mrc_id
        {
            EquipamentoDto _dto = _equipamentoReportingRepository.GetBy(id);
            EquipmentEditViewModel model = new EquipmentEditViewModel();
    
            model.TeId = _dto.TeId;
            model.MrcId = _dto.MrcId;
            model.MdlId = _dto.MdlId;
            model.Codigo = _dto.Codigo;
            model.Designacao = _dto.Designacao;
            model.Observacoes = _dto.Observacoes;
            return View(Hydrate(model));
    
        }
    
    
    
        [HttpPost, ValidateAntiForgeryToken]
        public ActionResult Edit(EquipmentEditViewModel model)
        {
            if (ModelState.IsValid)
            {
                List<string> items = new List<string>();
                try
                {
                    _commandProcessor.Process(new ChangeEquipamentoCommand(model.Id, model.TeId, model.MrcId, model.MdlId, model.Codigo, model.Designacao, model.Observacoes));
                    ShowSuccessMessage(string.Format(Success.RECORD_UPDATED, Label.EQUIPMENT));
                    return RedirectToAction<EquipmentController>(_controller => _controller.Details(model.Id));
                }
                catch (RecordNotExistsException)
                {
                    ShowErrorMessage(string.Format(Error.RECORD_NOT_EXIST, Label.EQUIPMENT));
                }
                catch (RecordNotActiveException)
                {
                    ShowErrorMessage(Error.RECORD_NOT_ACTIVE);
                }
                catch (RecordAlreadyExistsWithSameKeyException)
                {
                    ShowErrorMessage(string.Format(Error.RECORD_WITH_SAME_KEY, Label.CODE));
                }
                catch (Exception)
                {
                    ShowErrorMessage(Error.RECORD_UPDATE_ERROR);
                }
            }
    
            return View(Hydrate(model));
        }
    
        public ActionResult Delete(int id)
        {
            try
            {
                _commandProcessor.Process(new RemoveEquipamentoCommand(id));
                ShowSuccessMessage(string.Format(Success.RECORD_DELETE, Label.EQUIPMENT));
                return RedirectToAction<EquipmentController>(_controller => _controller.Index());
            }
            catch (RecordNotExistsException)
            {
                ShowErrorMessage(string.Format(Error.RECORD_NOT_EXIST, Label.EQUIPMENT));
            }
            catch (RecordNotActiveException)
            {
                ShowErrorMessage(Error.RECORD_NOT_ACTIVE);
            }
            catch (Exception)
            {
                ShowErrorMessage(Error.RECORD_DELETE_ERROR);
            }
            return RedirectToAction<EquipmentController>(c => c.Details(id));
        }
    
    
        private EquipmentEditViewModel Hydrate(EquipmentEditViewModel model)
        {
            model.TypeItems = GetAllPropertyTypes(model.TeId);
            model.MarcaItems = GetAllEquipmentBrand(model.MrcId);
            model.ModeloItems = GetAllEquipmentModel(model.MdlId);
            model.DESCRITIVO = GetAllDescritivo(model.Descritivo);
            model.OBRIGATORIO = GetAllObrigatorio(model.Obrigatorio);
            model.UNID = GetAllUNID(model.UnId);
            model.ORDEM = GetAllOrdem(model.Ordem);
    
            return model;
        }
    
        #endregion
    
        #endregion
    }
    }

    Agora o que eu pretendo é apresentar,para além do que já está definido no controler, no creat,details e edit a informação da tabela tipo_propriedade os campos em cima mencionados. Mas os dados que vão aparecer da tabela tipo_propriedade vai estar dependente do que vamos selecionar como marca equipamento.

    Por exemplo,eu seleciono uma marca de um equipamento,e automaticamente vai aparecer os campos da tabela tipo_propriedade que já tem a marca associada.

    quinta-feira, 22 de outubro de 2015 12:06
  • Como não consigo implementar da forma que quero,vou optar para já por implementar como sugerido em cima no ActionResult.Mas dá o seguinte erro " The model item passed into the dictionary is of type 'Project.Web.UI.Models.EquipmentEditViewModel', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1Project.Web.UI.Models.EquipmentEditViewModel]'." Como posso solucionar?
    quinta-feira, 22 de outubro de 2015 14:45
  • Como não consigo implementar da forma que quero,vou optar para já por implementar como sugerido em cima no ActionResult.Mas dá o seguinte erro " The model item passed into the dictionary is of type 'Project.Web.UI.Models.EquipmentEditViewModel', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1Project.Web.UI.Models.EquipmentEditViewModel]'." Como posso solucionar?

    Verifique se você não está passando um objeto EquipmentEditViewModel no lugar de uma lista de objetos EquipmentEditViewModel.

    Caso a ideia seja realmente passar somente "um objeto" (details, por exemplo), o problema estará na sua View (@model deve estar pedindo IEnumerable).

    Edit: Um model null pode ter sido passado também. Faça um debug e verifique o que pode ser.


    Att., Rafael Simor


    • Editado SimorC sexta-feira, 23 de outubro de 2015 01:23 Complemento de resposta
    quinta-feira, 22 de outubro de 2015 16:13