Fórum Dúvida com criação de view? #515940
07/04/2015
0
Agradeço
@model List<SistemaMobile.Models.cliente>
@{
ViewBag.Title = "";
}
<script>
function Selecionar()
{
var opcao1 = document.getElementById('radio-choice-v-2a').checked;
var opcao2 = document.getElementById('radio-choice-v-2b').checked;
var opcao3 = document.getElementById('radio-choice-v-2c').checked;
var txtPesquisa = document.getElementById('pesquisa').value;
var Resposta
if (opcao1 != false) {
Resposta = 1
// alert("selecionou a opção " + Resposta);
}
if (opcao2 != false) {
Resposta = 2
// alert("selecionou a opção " + Resposta);
}
if (opcao3 != false) {
Resposta = 3
// alert("selecionou a opção " + Resposta);
}
if (txtPesquisa != null) {
// alert("enviando os parametros");
if (Resposta > 0) {
$.post("/ConsultaCliente/ListaCliente", { recebeNome: txtPesquisa, recebeOpcao: Resposta }).done(function (data) {
// window.location.reload();
})
}
}
else {
alert("Adicionar um texto para pesquisa!")
}
}
</script>
<form >
<fieldset data-role="controlgroup">
<legend>Opção:</legend>
<input type="radio" name="radio-choice-v-2" id="radio-choice-v-2a" value="1" >
<label for="radio-choice-v-2a">Seu Nome</label>
<input type="radio" name="radio-choice-v-2" id="radio-choice-v-2b" value="2" >
<label for="radio-choice-v-2b">Nome do Pai</label>
<input type="radio" name="radio-choice-v-2" id="radio-choice-v-2c" value="3" >
<label for="radio-choice-v-2c">Nome da Mãe</label>
</fieldset>
<fieldset>
<label for="search">Localizar:</label>
<input type="search" name="search1" id="pesquisa" placeholder="buscar registro...">
</fieldset>
<input id="enviar" type="submit" value="Localizar" onclick="Selecionar()" data-icon="grid" data-iconpos="right" data-theme="e">
</form>
public ActionResult Index()
{
return View();
}
public ActionResult ListaCliente(string recebeNome, int recebeOpcao)
{
try
{
sistema_mobileEntities dao = new sistema_mobileEntities();
IQueryable<cliente> sql;
sql = null;
if (recebeOpcao == 1)
{
//link to sql não tem like
sql = from c in dao.cliente
where c.nome.StartsWith(recebeNome.Trim())
// where SqlMethods.Like(c.nome, recebeNome.Trim() + "%")
select c;
TempData["opcao1"] = "nome";
}
if (recebeOpcao == 2)
{
sql = from c in dao.cliente
where c.pai.StartsWith(recebeNome.Trim())
select c;
TempData["opcao2"] = "pai";
}
if (recebeOpcao == 3)
{
sql = from c in dao.cliente
where c.mae.StartsWith(recebeNome.Trim())
select c;
TempData["opcao3"] = "mae";
}
//return View(sql.ToList());
return View(dao.cliente.ToList());
}
catch (Exception ex)
{
return Json("Erro ao consultar usuario" + ex.Message);
}
}
@model List<SistemaMobile.Models.cliente>
@{
ViewBag.Title = "ListaCliente";
}
<form class="ui-filterable">
<input id="rich-autocomplete-input" data-type="search" placeholder="Buscar um texto...">
</form>
<ul data-role="listview" data-filter="true" data-inset="true" data-input="#rich-autocomplete-input">
@foreach (var item in Model)
{
<li data-filtertext="@Html.DisplayFor(c => item.nome)">
<a href="@Url.Action("AtualizaCliente", "ConsultaCliente", new { id = item.idcliente})"></a></li>
}
</ul>
Crist
Curtir tópico
+ 0Posts
07/04/2015
Joel Rodrigues
Gostei + 0
07/04/2015
Crist
No meu Index, eu tenho uma função para enviar dois parâmetros:
if (txtPesquisa != null) {
// alert("enviando os parametros");
if (Resposta > 0) {
$.post("/ConsultaCliente/ListaCliente", { recebeNome: txtPesquisa, recebeOpcao: Resposta }).done(function (data) {
// window.location.reload();
})
}
}
else {
alert("Adicionar um texto para pesquisa!")
}
No meu controller eu recebe estes parâmetros para fazer uma consulta:
public ActionResult ListaCliente(string recebeNome, int recebeOpcao)
então, eu deveria ser redirecionado para :
@model List<SistemaMobile.Models.cliente>
@{
ViewBag.Title = "ListaCliente";
}
Mais estou ficando na mesma página da consulta, preciso entender o porque ocorre isso.
Agradeço se puder ajudar!
Gostei + 0
07/04/2015
Crist
index
@model List<SistemaMobile.Models.cliente>
@{
ViewBag.Title = "";
}
@using (Html.BeginForm())
{
<fieldset data-role="controlgroup">
<input type="radio" name="@Html.RadioButton("nome", "Nome", true)" id="radio-choice-v-2a" value="1" >
<label for="radio-choice-v-2a">Seu Nome</label>
<input type="radio" name="@Html.RadioButton("pai", "Pai", true)" id="radio-choice-v-2b" value="1" >
<label for="radio-choice-v-2b">Nome do Pai</label>
<input type="radio" name="@Html.RadioButton("mae", "Mae", true)" id="radio-choice-v-2c" value="1" >
<label for="radio-choice-v-2c">Nome da Mãe</label>
</fieldset>
<fieldset>
<label for="search">Localizar:</label>
<input type="search" name="search1" id="pesquisa" placeholder="buscar registro...">
</fieldset>
<input id="enviar" type="submit" value="Localizar" data-icon="grid" data-iconpos="right" data-theme="e">
}
<p>@TempData["titulo1"]</p>
<ul data-role="listview" data-autodividers="true" data-inset="true" data-theme="e">
@if (Model.Count() > 0)
{
foreach (var item in Model)
{
<li><a href="@Url.Action("AtualizaCliente", "ConsultaCliente", new { id = item.idcliente })">@Html.DisplayFor(c => item.nome) </a></li>
}
}
else
{
<label>Você não tem dados cadastrados.</label>
}
</ul>
controller
[HttpPost]
public ActionResult Index(string recebeNome, int recebeOpcao)
{
try
{
sistema_mobileEntities dao = new sistema_mobileEntities();
IQueryable<cliente> sql;
sql = null;
if (recebeOpcao == 1)
{
sql = from c in dao.cliente
where c.nome.StartsWith(recebeNome.Trim())
select c;
TempData["opcao1"] = "nome";
}
return View(sql.ToList());
}
catch (Exception ex)
{
TempData["Erro"] = "Erro na gravação dos dados " + ex.Message;
}
return View();
}
Gostei + 0
07/04/2015
Joel Rodrigues
Quando você faz a submissão de dados via Ajax, você não é redirecionado para a outra página (é pra isso que serve o Ajax).
Se você quer que o usuário submeta um formulário de pesquisa, pode manter a estrutura do controller e no form ter os inputs com o mesmo nome dos parâmetros que serão enviados. É importante também que o form esteja apontando para a Action que receberá os argumentos da pesquisa.
Gostei + 0
07/04/2015
Randrade
Porém, eu não consegui entender direito sua dúvida. Caso não tenha achado a resposta ainda, explique seu problema, que ficarei feliz em ajudar.
Gostei + 0
07/04/2015
Randrade
Você pode utilizar Helpers, que eu particularmente aconselho. Você pode adicionar eles na classe do Bootstrap, sem problemas, praticamente da mesma forma.
O problema que você estava tendo, é que ao pesquisar (e muito, pelo sinal), você encontrou três formas diferentes de passar os dados para o Controller. Cada uma dessas formas funcionam perfeitamente. Porém você estava utilizando as três da mesma forma. E isso que estava sendo o problema.
Mas isso acontece, e é normal.
Apenas deixando uma obs, na forma que você está utilizando:
Se você deixar o Controller desta forma, se o usuário não selecionar nenhum RadioButton, você terá um erro em seu sistema. Ou você adiciona o parâmetro podendo receber null, ou você adiciona uma rota para isso, em seu RouteConfig.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)