Query linq para algo que se possa editar
Sou programador iniciante, e estou com uma duvida,
Tenho 03 tabelas, que controlam a ação de um envolvido,
cada individuo pode ter muitas ações, o problema é que tem uma
tabela de relacionamento que liga o Envolvido com suas ações (tabela Responsavel_acao) ,
Exemplo:
Envolvido
Cod_envolvido - int(auto incremento)
Nome_envolvido - varchar(50)
Acao
Cod_acao - int(auto incremento)
Nome_acao - varchar(50)
Responsavel_acao
Cod_responsavelAcao - int(auto incremento)
Cod_envolvido - int (ligado com a tabela envolvido)
Cod_acao - int (ligado com a tabela acao)
O que preciso é simplesmente selecionar o envolvido (um drop por exemplo)
e um grid mostrar todas as ações dele (e editar)
.. ou seja um envolvido pode ter dezenas de ações
depois de muito tentar eu consegui fazer uma query com o Linq
(estou tentando usar bastante o linq, pois gostei muito das facilidades que ele oferece)
var dados = from c in db.envolvidos
join p in db.responsavel_acaos on c.cod_envolvido equals p.cod_envolvido
join ac in db.acoes on p.cod_acao equals ac.cod_acao
where c.cod_envolvido == 1
select new
{
ac.cod_acao,
ac.descr_acao
};
// ASPxGridView3.AutoGenerateColumns = true;
ASPxGridView3.DataSource = dados;
ASPxGridView3.DataBind();
Bom eu consegui jogar isso pra um grid, e aparece exatamente o que preciso,
o problema é que eu preciso editar esses dados, (incluir, apagar, excluir)
e esse grid é só o resultado da consulta e não sei como fazer, seria perfeito
se eu conseguisse fazer a edição no proprio grid. então como posso fazer
pra trasnfrormar essa query em (suponho seja a solução) um Linqdatasource ?
Tenho 03 tabelas, que controlam a ação de um envolvido,
cada individuo pode ter muitas ações, o problema é que tem uma
tabela de relacionamento que liga o Envolvido com suas ações (tabela Responsavel_acao) ,
Exemplo:
Envolvido
Cod_envolvido - int(auto incremento)
Nome_envolvido - varchar(50)
Acao
Cod_acao - int(auto incremento)
Nome_acao - varchar(50)
Responsavel_acao
Cod_responsavelAcao - int(auto incremento)
Cod_envolvido - int (ligado com a tabela envolvido)
Cod_acao - int (ligado com a tabela acao)
O que preciso é simplesmente selecionar o envolvido (um drop por exemplo)
e um grid mostrar todas as ações dele (e editar)
.. ou seja um envolvido pode ter dezenas de ações
depois de muito tentar eu consegui fazer uma query com o Linq
(estou tentando usar bastante o linq, pois gostei muito das facilidades que ele oferece)
var dados = from c in db.envolvidos
join p in db.responsavel_acaos on c.cod_envolvido equals p.cod_envolvido
join ac in db.acoes on p.cod_acao equals ac.cod_acao
where c.cod_envolvido == 1
select new
{
ac.cod_acao,
ac.descr_acao
};
// ASPxGridView3.AutoGenerateColumns = true;
ASPxGridView3.DataSource = dados;
ASPxGridView3.DataBind();
Bom eu consegui jogar isso pra um grid, e aparece exatamente o que preciso,
o problema é que eu preciso editar esses dados, (incluir, apagar, excluir)
e esse grid é só o resultado da consulta e não sei como fazer, seria perfeito
se eu conseguisse fazer a edição no proprio grid. então como posso fazer
pra trasnfrormar essa query em (suponho seja a solução) um Linqdatasource ?
Mateus Lopes
Curtidas 0
Respostas
Luiz Maia
28/05/2009
Ola Mateus,
Sugiro vc mondar um recurso de edição fora da Grid, fica muito engessado. Por exemplo, caso tenha varios campos na Grid fica muito ruim.
Ja que esta começando desenvolver agora, tente evitar o maximo o uso de recursos criados via Wizard, procure fazer sempre via codigo, assim vc podera aprender realmente a programar sabendo que o que acontece no background do Modo Design.
Voltando ao seu problema, faça o seguinte:
Crie duas colunas do tipo TemplateField no final de sua Grid e adicione os eventos de Edição e Exclusão as mesmas:
<asp:GridView ID="gvDados" runat="server" AutoGenerateColumns="False" DataKeyNames="codfiscal" OnRowDataBound="gvDados_RowDataBound" AllowPaging="True" OnPageIndexChanging="gvDados_PageIndexChanging">
<Columns>
<asp:BoundField DataField="numGtd" HeaderText="Número" />
<asp:BoundField DataField="nomDocum" HeaderText="Tipo" />
<asp:TemplateField HeaderText="Alterar" SortExpression="codGtd">
<ItemStyle HorizontalAlign="Center" />
<HeaderStyle HorizontalAlign="Center" Width="1px" />
<ItemTemplate>
<asp:ImageButton ID="ibAlterar" runat="server" CausesValidation="False" ImageUrl="~/Images/btn_alterar.gif"
OnCommand="Alterar" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Excluir" ShowHeader="False">
<ItemStyle HorizontalAlign="Center" />
<HeaderStyle HorizontalAlign="Center" Width="1px" />
<ItemTemplate>
<asp:ImageButton ID="ibExcluir" runat="server" CausesValidation="False" ImageUrl="~/Images/btn_excluir.gif"
OnClientClick="javascript:return ConfirmaExclusao('esta GTD');" OnCommand="Excluir" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerStyle Font-Bold="True" ForeColor="White" />
</asp:GridView>
No evento RowDataBound do GridView, vc coloca os commadsArguments para os itens que deseja editar.
Note que o metodo acima (RowDataBound) é invocado no GridView na coluna Alterar.
Agora é só usar um Panel, por exemplo, e mandar as informações que vc deve recuperar na base para os controles dentro dele, já que vc já tem o ID do registro que deseja alterar. Pode usar a própria parte de cadastro.
Tenho um exemplo de aplicação que fiz ontem para outro solicitante, disponibilizei ele no Disco Virtual, esta em C#, caso queira, posso disponibilizar pra vc tb, vera que é bem simples e vc podera fazer as alterações pertinentes ao seu projeto.
Caso não entenda algum passo, me avise.
Aguardo seu retorno.
Att
Luiz Maia
GOSTEI 0
Mateus Lopes
28/05/2009
Ola, será que vc poderia me disponibilizar o exemplo ?
GOSTEI 0
Luiz Maia
28/05/2009
Ola Mateus, tudo bom?
Seria altamente recomendavel vc ler este artigo:
https://www.devmedia.com.br/articles/viewcomp.asp?comp=9281
Caso não possua acesso, providenciamos para vc, apenas me informe, ok!
Segue uma aplicação de exemplo que fiz para um outro soliticante.
Tem todos os metodos de um CRUD no arquivo Descricao.aspx dentro da pasta Adminstracao.
http://video.devmedia.com.br/naoexclusivo/LuizMaia/Consultoria/fernando01.zip
Aguardo seu retorno Mateus,
Abraços
Att
Luiz Maia
GOSTEI 0
Mateus Lopes
28/05/2009
Ola Luiz, eu tentei, mas infelizmente eu não consegui..
De qualquer forma muito obrigado, pela ajuda, pelo jeito ainda tenho um longo caminho, achei muito complicado, então vou fazer de outro jeito, sou muito novato, nisso.. então pode fechar esse chamado.
Se puder pegue o outro chamado que abri, e conversamos lá Abraços
De qualquer forma muito obrigado, pela ajuda, pelo jeito ainda tenho um longo caminho, achei muito complicado, então vou fazer de outro jeito, sou muito novato, nisso.. então pode fechar esse chamado.
Se puder pegue o outro chamado que abri, e conversamos lá Abraços
GOSTEI 0
Luiz Maia
28/05/2009
Blz Mateus,
Precisando de qualquer coisa, me avise.
Estamos a disposição.
Abraços
Att
Luiz Maia
GOSTEI 0
Devmedia
28/05/2009
Mateus,
a consultoria DevMedia está pronta para resolver os seus problemas quanto a linguagem q vc escolheu.
Se o exemplo que o consultor não esclareceu em sua totalidade as dúvidas, por favor, post nesse mesmo chamado as dúvidas existentes para que o consultor possa lhe ajudar, sempre buscando clareza nas suas respostas.
Se achar mais confortável e rápido de entender, vc pode solicitar uma resposta em video sobre o problema em qestão.
a consultoria DevMedia está pronta para resolver os seus problemas quanto a linguagem q vc escolheu.
Se o exemplo que o consultor não esclareceu em sua totalidade as dúvidas, por favor, post nesse mesmo chamado as dúvidas existentes para que o consultor possa lhe ajudar, sempre buscando clareza nas suas respostas.
Se achar mais confortável e rápido de entender, vc pode solicitar uma resposta em video sobre o problema em qestão.
GOSTEI 0
Devmedia
28/05/2009
Mateus,
a consultoria DevMedia está pronta para resolver os seus problemas quanto a linguagem q vc escolheu.
Se o exemplo que o consultor não esclareceu em sua totalidade as dúvidas, por favor, post nesse mesmo chamado as dúvidas existentes para que o consultor possa lhe ajudar, sempre buscando clareza nas suas respostas.
Se achar mais confortável e rápido de entender, vc pode solicitar uma resposta em video sobre o problema em qestão.
a consultoria DevMedia está pronta para resolver os seus problemas quanto a linguagem q vc escolheu.
Se o exemplo que o consultor não esclareceu em sua totalidade as dúvidas, por favor, post nesse mesmo chamado as dúvidas existentes para que o consultor possa lhe ajudar, sempre buscando clareza nas suas respostas.
Se achar mais confortável e rápido de entender, vc pode solicitar uma resposta em video sobre o problema em qestão.
GOSTEI 0