Preciso de ajuda nessa GridView...
Olá pessoal,
estou precisando de uma ajudinha, preciso implementar uma funcionalidade em gridview para atualização de uma informação especifica, so que eu não estou tendo a luz da criança, pois aqui agente não pode acessar a base diretamente, como o gridview faz temos que acessar por uma classe e usar hibernate, mas o que eu quero mesmo e a logica ou a ajuda mesmo nesse gridview para fazer essa implementação, usamos web user control na Tela de alteração, abaixo vou passar todo o codigo aonde preciso implementar:
Se tiver como visualizar as imagens preciso implementar os botões de editar, quando clicados aparecerar uma tela de apenas para alterar os valores de peso.
Imagens:
../imagens/articles/189441/GCR_2-2.JPG - Aqui preciso implementar uma forma que venha o botão imagem, apenas nas informações não nos titulos, conforme em vermelho.
imagens/articles/189441/CGR_1-2.JPG - Aqui preciso editar apenas aquela informação de peso.
----------------------------------------------------------------------------------------------
1 - visualizarReumo.aspx
<asp:Content ID="Content1" ContentPlaceHolderID="conteudo" runat="Server">
<table class="BordaTabela" width="100%" border="0" cellpadding="5" cellspacing="0">
<tr class="TituloTabela">
<td height="5">
Grau de Complexidade do RAL - GCRtd>
tr>
<tr class="LinhaClara">
<td style="height: 5px">
td>
tr>
<tr class="LinhaClara">
<td height="5">
<asp:GridView ID="gvGCR" runat="server" FooterStyle-CssClass="LinhaEscura"
FooterStyle-Font-Bold="true" Width="550px">
<Columns>
<asp:TemplateField HeaderText="Descrição">
<ItemTemplate>
ItemTemplate>
asp:TemplateField>
<asp:TemplateField HeaderText="Quantidade">
<ItemTemplate>
ItemTemplate>
<ItemStyle HorizontalAlign="Right" />
asp:TemplateField>
<asp:TemplateField HeaderText="Editar" >
<ItemTemplate>
<asp:ImageButton ImageUrl="~/site/imagens/ico-editar.gif" Onclick="PrototipoEditarGCR_click" Visible="true" runat="server" ID="PrototipoEditarGCR" />
ItemTemplate>
asp:TemplateField>
Columns>
<FooterStyle CssClass="LinhaEscura" Font-Bold="True" />
asp:GridView>
<br />
<asp:Label ID="lblTotalGCR" runat="server" CssClass="TituloPagina" Text="Total GCR: " style="font-weight: normal;">asp:Label>
<br />
<asp:Label ID="lblClassificacaoGCR" runat="server" CssClass="TituloPagina" Text="Classificação: " style="font-weight: normal;">asp:Label>
<uc1:Navegacao ID="navegaPagina" runat="server" btnTelaAnterior="false" btnProximaTela="false" btnEstouCiente="true" />
td>
tr>
table>
asp:Content>
----------------------------------------------------------------------------------------------
2 - visualizarResumo.aspx.vb
Imports System.Collections.Generic
Imports br.gov.dnpm.ral
Imports br.gov.dnpm.util
Partial Class VisualizarResumo
Inherits Page
Protected vQuantidadesProcessoPorTipoSituacaoOperacional As IDictionary(Of TipoSituacaoOperacional, Integer)
Protected vQuantidadesProcessoPorTipoDiploma As IDictionary(Of TipoDiplomaLegal, Integer)
Guarda a relação entre os tipos envolvidos e o peso
Protected vPesosPorTipoPropriedade As IDictionary(Of String, Integer) = New Dictionary(Of String, Integer)
Variável auxiliar utilizada no asp
Public headerTemplateDiploma As String
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Declarar variáveis locais
Dim _ral As RAL = Nothing
Dim _ralFacadeFactory As RALFacadeFactory = FacadeFactoryHelper.newFacadeFactory()
Dim _ralFacade As RALFacade = _ralFacadeFactory.criarRALFacade
Verificar se um RAL está sendo aberto
If Request.Params("codigoRal") <> Nothing Then
Session.Item("codigoRal") = Request.Params("codigoRal")
End If
Se existe um ral selecionado
_ral = _ralFacade.consultarCodigoRAL(Session.Item("codigoRal"))
Session.Add("numeroCpfCnpjMinerador", _ral.minerador.numeroCpfCnpj)
Session.Add("nomeMinerador", _ral.minerador.nome)
Session.Add("anoBaseRal", _ral.anoBase)
loadPermissaoMenu(_ral)
If _ral.analises Is Nothing Then
_ralFacade.salvar(_ral)
End If
If (_ral.analises.grauComplexidade Is Nothing) Or (_ral.analises.grauComplexidade.Count.Equals(0)) Then
_ralFacade.salvar(_ral)
End If
loadGrid(_ral)
getValorPonderadoTotal(_ral)
navegaPagina.loadButton(_ral)
End If
End Sub
Protected Function getValorPonderadoTotal(ByVal ral As RAL) As Integer
lblTotalGCR.Text += CType(ral.analises.totalGCR, Integer).ToString()
Select Case ral.analises.totalGCR
Case Is = 10
lblClassificacaoGCR.Text += "RAL de complexidade padrão"
Case Is > 10
lblClassificacaoGCR.Text += "RAL acima da complexidade padrão"
Case Is < 10
lblClassificacaoGCR.Text += "RAL abaixo da complexidade padrão"
End Select
Return CType(ral.analises.totalGCR, Integer)
End Function
Private Sub loadPermissaoMenu(ByVal _ral As RAL)
Dim _possuiAguaMineral As Boolean = False
Dim _possuiCessaoArrendamento As Boolean = False
Dim _possuiSubstanciaDiferenteDeAguaMineral As Boolean = False
For Each titulo As TituloAproveitamento In _ral.minerador.titulosAproveitamento
_possuiCessaoArrendamento = (titulo.cessao IsNot Nothing OrElse titulo.arrendamento IsNot Nothing)
If Not (_possuiSubstanciaDiferenteDeAguaMineral AndAlso _possuiAguaMineral) Then
For Each s As Substancia In titulo.substancias
If s.tipoClasse.descricao = "Água Mineral" Then
_possuiAguaMineral = True
Else
_possuiSubstanciaDiferenteDeAguaMineral = True
End If
Next
End If
Next
Session.Add("possuiAguaMineral", _possuiAguaMineral)
Session.Add("possuiCessaoArrendamento", _possuiCessaoArrendamento)
Session.Add("possuiSubstanciaDiferenteDeAguaMineral", _possuiSubstanciaDiferenteDeAguaMineral)
End Sub
Private Sub loadGrid(ByVal _ral As RAL)
Dim gcrs As New List(Of GrauComplexidade)
Dim gcrsLegal As New List(Of GrauComplexidade)
Dim gcrsOperacional As New List(Of GrauComplexidade)
Dim gcrsEmpreendimentos As New List(Of GrauComplexidade)
For Each gcr As GrauComplexidade In _ral.analises.grauComplexidade
If gcr.tipo.codigo.Equals(GrauComplexidadeImpl.tipos.LEGAL) Then
gcrsLegal.Add(gcr)
ElseIf gcr.tipo.codigo.Equals(GrauComplexidadeImpl.tipos.OPERACIONAL) Then
gcrsOperacional.Add(gcr)
ElseIf gcr.tipo.codigo.Equals(GrauComplexidadeImpl.tipos.CARACTERIZACAO_EMPREENDIMENTOS) Then
gcrsEmpreendimentos.Add(gcr)
End If
Next
gcrs.Add(New GrauComplexidadeImpl("1. CARACTERIZAÇÃO DOS DIREITOS MINERÁRIOS", 0, 0, Nothing))
If (gcrsLegal.Count > 0) Then
gcrs.Add(New GrauComplexidadeImpl("1.1 Legal", 0, 0, Nothing))
gcrs.AddRange(gcrsLegal)
End If
If (gcrsOperacional.Count > 0) Then
gcrs.Add(New GrauComplexidadeImpl("1.2 Operacional", 0, 0, Nothing))
gcrs.AddRange(gcrsOperacional)
End If
If (gcrsEmpreendimentos.Count > 0) Then
gcrs.Add(New GrauComplexidadeImpl("2. CARACTERIZAÇÃO DOS EMPREENDIMENTOS", 0, 0, Nothing))
gcrs.AddRange(gcrsEmpreendimentos)
End If
gvGCR.DataSource = gcrs
gvGCR.DataBind()
End Sub
Protected Sub PrototipoEditarGCR_click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs)
Dim PrototipoEditarGCR = Nothing
PrototipoEditarGCR.Redirect = "~/includes/PrototipoEditarGCR.ascx"
End Sub
End Class
----------------------------------------------------------------------------------------------
Se precisar de mais informação estou no aguarde, pra mim quanto antes melhor..
Att,
Alencar Porto
Alencar Porto
Curtidas 0
Mais Respostas
Guinther Pauli
10/11/2008
Olá Alencar,
Tudo bem ?
Você poderia esclarecer melhor, o que exatamente está querendo atualizar no gridview ?
Preciso entender melhor a situação para poder ajudá-lo.Quanto mais infomações melhor !!
Fico no aguardo,
abs
GOSTEI 0
Alencar Porto
10/11/2008
Claro,
nem eu estava entendo direito o que era pra fazer.
E o seguinte na Gridview devemos criar uma nova coluna Editar (quando clicamos no icone conforme mostra a figuras anexadas sobre Grai de complexidade do RAL, clicando nele deve ser aberto uma janelinha modalPopupExtended:ajax para editar as informações de peso"ou quantidade". Detalhe que ele deve criar dinamicamente os icones e nao deve criar em por exemplo 1.1 Legal e 1.2 Operacional. Eu não estou conseguindo fazer essa criação dinamica e ao mesmo tempo trazer corretamente a informação para alteração. Num User control.
Então preciso:
1 - Fazer um coluna editar GridView dinamincamente apenas nas informações apresentadas com valores (peso).
2 - Fazer um tela que altere, essas informações.
Espero que tenha ajudado, se precisar de mais informações so apresentar as questões toda ajuda e muito bem vinda, caso seja necessario criar um Video mostrando o projeto para um melhor entendimento posso faze-lo.
Att.,
Alencar Porto
alencarxx@hotmail.com
sky: alencar.porto
gtalk: alencarporto2008@gmail.com
GOSTEI 0
Guinther Pauli
10/11/2008
Alencar,
Estou enviando em anexo um exemplo completo, inclusive com banco de dados, de como chama um modalpopup a partir de um gridview, inclusive tem o exemplo de atualização de dados.
http://video.devmedia.com.br/EuclidesChuma2/Chamado363-GridViewModelPopupExtender.zip
Caso tenha alguma dúvida estamos a disposição,
Aguardo seu retorno,
abs
GOSTEI 0
Alencar Porto
10/11/2008
Olá pessoal,
e o seguinte para conseguir Buildar (rodar) aqui na minha maquina preciso que esteja na versao 2.0 do VS, não tenho como baixar um Express VS 2008 e instalar na maquina que eu trabalho.
Eu vi o modelo, acredito que vai me ajudar, mas preciso faze-lo roda-lo. blz..
Att.,
Alencar Porto
GOSTEI 0
Guinther Pauli
10/11/2008
Alencar,
Segue exemplo convertido para o VS 2005,
http://video.devmedia.com.br/EuclidesChuma2/Chamado363-GridViewModelPopupExtender-VS2005-.zip
Aguardo seu retorno,
abs
GOSTEI 0
Guinther Pauli
10/11/2008
Alencar,
Seu problema foi resolvido ?
Posso ti ajudar em mais alguma coisa neste chamado ?
Fico no aguardo,
abs
GOSTEI 0
Alencar Porto
10/11/2008
Olá,
Cara ficou muito bom o exemplo para gridview em VS2005, aqui funcinou uma beleza. Mas ainda não contempla minha duvida.
Pois se verificarmos bem a minha gridview ele e preenchida com linhas que não editam nada, e eu ainda não achei uma logica correta para fazer que o o botão de editar não apareça nessas linhas,
por exemplo: 1.1 Legal ou 1.2 Operacional na tela de Grau de Complexidade, essa logica que eu preciso fazer funcionar na GridView.
Att.,
Alencar Porto
GOSTEI 0
Guinther Pauli
10/11/2008
Alencar,
O que você quer é acionar o modalPopUp no momento que o usuário clikar na linha?
Gostaria de entender melhor qual seu objetivo, pois não está claro.
No aguardo,
abs
GOSTEI 0
Alencar Porto
10/11/2008
Ok,
Não não e isso não. preciso que você olha direito na imagem GCR_2.jpg, se perceber na coluna do ImageButton, tem linhas que não aparece a imagem Ico-editar.gif. Eu preciso dessa logica para o Gridview, pois a logica do ModalPopup esta ok. Não estou conseguindo saltar uma linha ou alguma regra que faça a imagemButton = false naquela linha especifica. Como eu disse por exemplo 1.1Legal so em Descrição mais nada em peso ou editar.
Basta olhar melhor a imagem anexo GCR_2.jpg.
GOSTEI 0
Guinther Pauli
10/11/2008
Alencar,
Eu olhei as imagens, pelo que eu entendi essa é o cenário que você tem e não o que você queria ter.
Para ver se eu entendi,
Você quer que as imagens apareçam apenas nas linhas que não são títulos, assim como na imagem em anexo. e essa imagem ira chamar o modalPopUp ?
Seria apenas isso ou teria que ter alguma outra imagem nos títulos que edite apenas a descrição dos títulos?
Aguardo para fechar.
GOSTEI 0
Guinther Pauli
10/11/2008
Alencar,
Continuamos aguardando seu retorno,
abs
GOSTEI 0
Alencar Porto
10/11/2008
Certo,
Eu continuo precisando de ajuda. Parece que não ficou claro o que eu preciso, o exemplo não supriu minha duvida, que e fazer um controle de linhas. como o exemplo em anexo da imagem GCR.JPG. Que as linhas marcas em vermelho na coluna Editar não deveria aparecer o ImageButton que linka para o modalPopup.
O que eu desejo e um mecanismo de controle dessas linhas para não aparecer nada.
Ou, será que não e possivel fazer isso numa gridview?
Att.
Alencar Porto
GOSTEI 0
[devmedia .net]
10/11/2008
Olá Alencar,
Vamos resolver seu problema ok !?
O que eu entendi é que você precisa colocar o botão editar somente na linha que tem a informação de peso correto!?
Você deverá trabalhar com o método RowDataBound do Grid..
esse método é executado ao ser carregada as linhas do grid...
Segue abaixo um exemplo..
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if ((e.Item.ItemType == ListItemType.Item)|| (e.Item.ItemType == ListItemType.AlternatingItem))
{
//Verifica se a coluna correspondente ao peso ‚ diferente de vazio
if (e.Row.Cells[0].Text == "")
{
//Se for diferente de vazio
//encontre o botÆo editar , coloque o nome do botÆo editar(imagebutton)
((ImageButton)e.Row.FindControl("ImagemButton1")).Visible = false;
}
}
}
o resto fica igual, para utilizar o popup..
abraços,
Aguardo retorno...
Carlos Jr
GOSTEI 0
Alencar Porto
10/11/2008
Olá,
esta dando um erro de sintaxe na expressão abaixo:
((ImageButton)e.Row.FindControl("btnEdit")).Visible = False
O que seria, esta faltando alguma coisa, um for? Coloquei em anexo um printScreen do Erro_de_sintaxe.jpg,
A valeu pela dica, ja tinha tentado com RowDatabound, mas não nessa logica...
Att.,
Alencar Porto
GOSTEI 0
[devmedia .net]
10/11/2008
Opa,
cara preciso que me envie o erro..
não consigo ver sua imagem...
Me envio o erro aqui no chamado mesmo...
Copia e cola mensagem, pois teria que funcionar..
Abraços
No aguardo
Carlos Jr
GOSTEI 0
[devmedia .net]
10/11/2008
Olá Alencar, tudo bem ?
gostaria de saber se resolveu seu problema,
ou e se posso lhe ajudar em algo mais.
Você fez os testes ?
algum erro gerado ?
Poderia encaminhar ?
Abraços
Carlos Jr
GOSTEI 0
Alencar Porto
10/11/2008
Olá,
pessoal obrigado pelas sugestões, vieram muito a se encaixar com os codigos, mas agora e outra historia pois aqui trabalhamos com Nhibernate (ou melhor trabalhodemais hibernate) então estão surjindo outros erros devido a arquitetura estabelecida aqui no setor. O que eu gostaria de saber mais e sobre arquitetura Nhibernate (material muito escasso) e Especificamente se existem exmplo praticos usando Nhibernate..
Att.,
Alencar Porto
GOSTEI 0
[devmedia .net]
10/11/2008
Alencar,
existem muitos artigos e video aulas de NHibernate na DevMedia...
Estou postando alguns deles para você.
https://www.devmedia.com.br/articles/viewcomp.asp?comp=6652
https://www.devmedia.com.br/articles/viewcomp.asp?comp=7341
https://www.devmedia.com.br/articles/viewcomp.asp?comp=7262
Pesquisa
https://www.devmedia.com.br/articles/listcomp.asp?txtsearch=nhibernate
Se caso não tiver acesso a algum desses artigos,
por favor nos comunique que te daremos acesso.
PS: Esse projeto não pode ser alterado para utilizar LINQ ?
Acho bem melhor de se trabalhar do que o NHiberante e tem muito mais referências objetivas.
Espero que isso lhe ajude,
Aguardo seu retorno para finalização do chamado.
Abraços
Carlos Jr
GOSTEI 0
Alencar Porto
10/11/2008
Certo,
Faço uma sugestão para proximas materias ate do Devmedia ou da Resvista .Net Magazine sobre a necessidade de exemplos na migração de um projeto Nhibernate para Linq, usando as ferramentas disponiveis em varios braços abrangentes. Isso sem duvida iria ajudar no convencimento, de setores não burocraticos como o do governo, pois sem vantagens e muito dificil a migração, e outra pretendo se houver tempo fazer uma demonstração de migração para comparar desenvolvimento e produtividade alem de desempenho para cliente, com Linq acredito na ferramenta mas e preciso pra classe operaria como eu (rss) de argumentos mais fortes para tal migração...
Fica ae minha ideia,
Attl.,
Alencar Porto
GOSTEI 0
[devmedia .net]
10/11/2008
Opa,
com certeza a sugestão é bem vinda...
Iremos estudar a possibilidade...
Fico no aguardo para saber se conseguiu solucionar seu problema
Abraços
Carlos Jr
GOSTEI 0
[devmedia .net]
10/11/2008
Oi Alencar, tudo bem ?
Podemos fechar esse chamado ?
Abraços
Carlos Jr
GOSTEI 0
Alencar Porto
10/11/2008
BLZ... pode fechar,
esse, mas ja to abrindo outro tambem de gridview....
Att., Alencar Porto
Att., Alencar Porto
GOSTEI 0