Array
(
)

Tela de pesquisa abrindo cadastro em modo edição

Pjava
   - 02 abr 2013

Pessoal, preciso construir uma tela de pesquisa que vai funcionar assim:
Terá um Grid(GridView) com os dados vindos do BD. Quando eu clicar ou um double click em dessa tela, deverá abrir a tela de cadastro, noquele registro. Mas antes de clicar, histaaverá um TextBox para o usuário fazer o filtro da pesquisa. Se houver dados, virá no grid. O usuário dá um double click e abre a tela de cadastro nesse registro encontrado. Caso não exista, abrirá a tela de cadastro em branco(Novo Registro). Estou apanhando é no gridview. Eventos e etc...

Paulo Freire
|
MVP
    04 abr 2013

Vamos lá PJava, ao seu cenário... vou usar

Imagino que vc já tenha o GridViewer com os dados ID, NOME ETC, no seu gridviewer tem uma propridade chamada "DataKeyNames" que é o parametros de nossa pesquisa para abertura do WebForm de cadastro que vc usa. Pois bem, clique em Edit Column do GridViewer e adicione um ButtonField, com o Text=Seleciona e o CommandName=Seleciona

Agora vamos trabalhar com Seção.

No Evento do GridViewer = RowCommnad

if (e.CommandName == "Seleciona") // Seu clicar em Seleciona vai para o cliente selecionado
{
Session["IDCliente"] = GridClientes.DataKeys[Convert.ToInt32(e.CommandArgument)].Values["ID"].ToString();
Response.Redirect("CadastroClientes.aspx", false);
}

Beleza, agora vamos capturar o ID do Cliente na bertura do WebForm CadastroClientes.aspx

No evento Page_load do CadastroCleintes.aspx

if (!Page.IsPostBack)
{
if (Session["IDCliente"] != null) // Se não selecionou ninguem não carrega ninguem
CarregaClientePeloID(Session["IDCliente"].ToString());
}

}

public void CarregaClientePeloID(string IDCliente)
{
int wID = Convert.ToInt32(IDCliente);
EntitiesCMSP db = new EntitiesCMSP();

var pesquisa = (from m in db.CLIENTES
where m.ID == wID
select m).FirstOrDefault();

if (pesquisa != null)
{
txtID.Text = pesquisa.ID.ToString();
txtNome.Text = pesquisa.NOME.ToString();
txtEndereco.Text = pesquisa.ENDERECO.ToString();
}
}

Qualquer dúvida estamos por aqui

0
|
0

Pjava
   - 04 abr 2013

Ok, vou implementar e testar. Qualquer coisa posto aqui de novo.

0
|
0

Pjava
   - 08 abr 2013

Cara, tá dando erro no where. Se eu comento, dá erro no select. Eu tenho outra consulta muito pareceida com essa e não dá erro nenhum.

public void CarregaTriagemPeloID(Int32 _IdTriagem)
{
int wID = _IdTriagem;
WFJuridicoEntities db = new WFJuridicoEntities();
ObjectQuery<tbl_Triagem> triagens = db.tbl_Triagem;

var pesquisa = from m in triagens
where m.ID_Triagem == wID ==>> Aqui dá o erro
select new
{
m.id_recurso
};

if (pesquisa != null)
{
//txtID.Text = pesquisa.ID_Triagem.ToString();
//txtNome.Text = pesquisa.n.ToString();
//txtEndereco.Text = pesquisa.ENDERECO.ToString();
}
}

Esse é o erro que dá:
Cannot convert lambda expression to type 'string' because it is not a delegate type

0
|
0

Pjava
   - 08 abr 2013

Uma pergunta, quem são esses caras:
txtID.Text = pesquisa.ID.ToString();
txtNome.Text = pesquisa.NOME.ToString();
txtEndereco.Text = pesquisa.ENDERECO.ToString();

0
|
0

Paulo Freire
|
MVP
    09 abr 2013

Sao meus edits box, que no seu caso devera ser as labels.

0
|
0

Pjava
   - 09 abr 2013

Tenho apanhado bastante para preencher o meu GridView. Não sei como carregar a table para preencher o meu gridview. Veja como está:
public void CarregaTriagemPeloID(string _filtro)
{

WFJuridicoEntities db = new WFJuridicoEntities();
ObjectQuery<tbl_Triagem> triagens = db.tbl_Triagem;

var pesquisa = (from m in triagens
//where m.cpf_autor == _filtro
select m).ToList();

//Cria um Datatable... poderia ser um DT vindo do
//banco de dados...
foreach (var psq in pesquisa)
{
DataTable dt = new DataTable();
DataColumn c1 = dt.Columns.Add(psq.cpf_autor);
DataColumn c2 = dt.Columns.Add(psq.nm_autor);
// Vincula o DT ao Grid...
gdvPesqTriagem.DataSource = dt;
// Altera o Nome das colunas...
//gdvPesqTriagem.Columns[0].HeaderText = "Nome";
//gdvPesqTriagem.Columns[1].HeaderText = "Telefone";
// Esconde a 2a Coluna
//gdvPesqTriagem.Columns[1].Visible = false;
}

gdvPesqTriagem.DataBind();==> Não funciona, grid não aparece e tem informação na variável psq
}

0
|
0

Pjava
   - 10 abr 2013

Não consegui ainda fazer dois cliques numa linha do meu GridView e abrir o meu webform de cadastro, posicionado naquele registro do GridView, ou seja, carregar os controles do WebForm com os dados visualizados no Grid

0
|
0

Pjava
   - 10 abr 2013

Fiz e está dando índice fora do intervalo. Ficou assim:

protected void gdvPesqTriagem_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Seleciona") // Seu clicar em Seleciona vai para o cliente selecionado
{
Session["CodTriagem"] = gdvPesqTriagem.DataKeys[Convert.ToInt32(e.CommandArgument)].Values["id_triagem"].ToString();==> Aqui dá o erro
Response.Redirect("frmInsereTriagem.aspx", false);
}
}

0
|
0

Pjava
   - 11 abr 2013

Resolvi. É a propriedade DataKeyNames estava com o valor setado de forma errada. Agora, só não estou conseguindo abrir o WebForm com dados.

0
|
0

Pjava
   - 11 abr 2013

Resolvido nesse tópico(ID=439438). Pode fechar essa Thread também.

0
|
0

Joel Rodrigues
   - 11 abr 2013

Obrigado pelo retorno, PJava. Estou marcando o tópico como Concluído.

0
|
0