none
Datagrid (editar, atualizar e cancelar) - VS2003 RRS feed

  • Pergunta

  • Pessoal tenho um formulario de lançamento de notas que traz o ra e o nome do aluno e duas colunas para digitação das notas(nota1 e nota2), estou usando a coluna para editar, atualizar e cancelar, porem isso é feito registro a registro e funciona OK. Mas gostaria de dar mais agilidade ao formulario, criando um botão unico chamado por exemplo lançar nota, que iria "abrir" para edição as colunas de notas de todos os alunos (registros) de uma só vezes, e depois um botão salvar para salvar todas as alterações.

    Não estou conseguindo fazer.
    Conto com a ajuda de vocês.

    Grato,
    Julierme Felix - Aprendiz
    quarta-feira, 4 de maio de 2011 10:34

Respostas

Todas as Respostas

  • Oi,

    Neste artigo - http://www.bufaloinfo.com.br/artigos/coluna48.asp - o exercício 4 mostra como fazer isso.

    Os mesmos truques usados no artigo com a gridview também são válidos com a datagrid.

    Abs,

    Dennes
    http://www.bufaloinfo.com.br
    http://twitter.com/Dennes

     


    Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp
    • Sugerido como Resposta Erysson Souza quarta-feira, 4 de maio de 2011 11:40
    • Marcado como Resposta Julierme Felix quinta-feira, 5 de maio de 2011 19:14
    quarta-feira, 4 de maio de 2011 11:27
  • Julierme,

    vc pode colocar um link que abre todo conteúdo que vc quer editar em um panel, com textboxt mesmo é simples


    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC
    quarta-feira, 4 de maio de 2011 11:34
    Moderador
  • Olá Dennes

    O link que vc passou ajudou bastante, mas agora estou econtrando um problema no item DataGrid1_ItemDataBound para a coluna de total da a seguinte mensagem:

    a coluna esta como templatecolumn

     

    Seqüência de entrada não estava em um formato incorreto.

    segue o codigo

     Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
        Dim _total As Double
        Dim _total1 As Double
        Select Case e.Item.ItemType
          Case ListItemType.Item, ListItemType.AlternatingItem
            _total += CType(e.Item.Cells(2).Text, Double)
            _total1 += CType(e.Item.Cells(3).Text, Double)
    
            Dim tot As Double
    
            tot = (_total + _total1)
    
            e.Item.Cells(4).Text = tot.ToString
    
        End Select
      End Sub

     


    Julierme Felix - Aprendiz
    quarta-feira, 4 de maio de 2011 21:05
  • Oi,

    Para template columns, sempre use o findcontrol ao invés do text das células.

    Abs,

    Dennes
    http://www.bufaloinfo.com.br
    http://twitter.com/Dennes

     


    Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp
    • Marcado como Resposta Julierme Felix quinta-feira, 5 de maio de 2011 19:14
    quarta-feira, 4 de maio de 2011 21:12
  • A questão do total resolvei usei o codigo abaixo

     Function CalculaTotal(ByVal inota01, ByVal inota02) As String
        CalculaTotal = String.Format(inota01 + inota02)
      End Function

    e na tag do textbox coloquei

    <%# CalculaTotal(Container.DataItem("nota01"), Container.DataItem("nota02"))%>

    mas agora estou querendo colocar uma condição na coluna de resultado se total for maior que 16,8 aprovado menor recuperação.

    estou colocando o codigo no DataGrid1_ItemDataBound

     For Each item As DataGridItem In Me.DataGrid1.Items
          If item.ItemType = ListItemType.Item OrElse item.ItemType = ListItemType.AlternatingItem Then
            Dim result As Label
            result = DirectCast(item.Cells(5).FindControl("lblresult"), Label)
            If item.Cells(4).Text > "16" Then
              result.Text = "aprovado"
            Else
              result.Text = "recuperação"
    
            End If
          End If
        Next

    mas é como se le-se a coluna do total como string pois na coluna de resultado só aparece recuperação independente do valor que esteja na coluna total.

    devo estar fazendo algo ou tudo errado, mas não estou encontrando a forma correta.


    Julierme Felix - Aprendiz
    quarta-feira, 4 de maio de 2011 21:43
  • Oi,

     item.Cells(4).Text <===== Isso é string

    "16" <========= Isso também.

    Se deseja que sejam valores numéricos então converta para valores numéricos.

    Abs,

    Dennes
    http://www.bufaloinfo.com.br
    http://twitter.com/Dennes


    Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp
    • Marcado como Resposta Julierme Felix quinta-feira, 5 de maio de 2011 19:14
    quinta-feira, 5 de maio de 2011 00:13
  • Valeu dennes... As vezes olhamos e mesmo assim as coisas passam desapercebidas, agora deu certo

    usei o codigo abaixo

     For Each item As DataGridItem In Me.DataGrid1.Items
          If item.ItemType = ListItemType.Item OrElse item.ItemType = ListItemType.AlternatingItem Then
            Dim n1 As TextBox
            n1 = DirectCast(item.Cells(2).FindControl("txtn1"), TextBox)
            Dim n2 As TextBox
            n2 = DirectCast(item.Cells(3).FindControl("txtn2"), TextBox)
            Dim result As Label
            result = DirectCast(item.Cells(5).FindControl("lblresult"), Label)
    
            Dim valor As Double
            valor = (CType(n1.Text, Double) + CType(n2.Text, Double))
            If valor >= CType("16,8", Double) Then
              result.Text = "aprovado"
            Else
              result.Text = "recuperação"
    
            End If
          End If
        Next


    Julierme Felix - Aprendiz
    quinta-feira, 5 de maio de 2011 10:50