1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Grid view asp.net

Discussão em 'Web Development' iniciada por alfinete, 6 de Junho de 2007. (Respostas: 3; Visualizações: 1635)

  1. alfinete

    alfinete Power Member

    [​IMG]

    tenho esta grid view

    e quero por codigo para o botão pedir

    do tipo para detectar o id do campo que que a caixa de texto esta preenchida

    como o posso fazer , pois não estou a ver

    de preferencia tdo com código e VB
     
    Última edição: 6 de Junho de 2007
  2. alfinete

    alfinete Power Member

    o meu código é o seguinte

    Protected Sub GridView_pedidos_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView_pedidos.RowCommand


    ' funcionamento do botão
    If (e.CommandName = "BotaoPedir") Then


    Me.Lbl_teste.Text = "alf"
    End If



    End Sub

    até aqui tdo bem tenho o botão da grid view a funcionar

    mas quando quero por o conteudo que digito na caixa de texto , na label, ja se torna mais dificil, como o posso fazer
     
  3. p3dro

    p3dro Power Member

    o botão não é um botão de select, como tal não seleciona a linha qdo clicas e sendo assim n se sabe o rowindex de onde o botão foi pressionado (acho eu :-D)

    uma possivel maneira manhosa de saber qual o botão que foi pressionado e consequentemente obter o valor da textbox respectiva é usar o CommandArgument do Button e por ex. um hidden field nessa row

    adicionando este campo ao <ItemTemplate> da gridview
    Código:
    <asp:HiddenField ID="auxHiddenArgument" runat="server" />
    
    este campo é depois utilizado para comparar com o CommandArgument do botão clicado e assim detectar kal a linha onde se está

    para preencher automaticamente os valores do CommandArgument e do hidden field, podes usar o evento Page_Load e adicionar o seguinte código:

    Código:
        
            If Not IsPostBack Then
                Dim rnd As New Random
                Dim auxRnd As Integer
                Dim bt As Button
                Dim auxHiddenArgument As HiddenField
    
                For Each row As GridViewRow In GridView_pedidos.Rows
                    auxRnd = rnd.Next()
                    bt = CType(row.FindControl("Btn_pedir"), Button)
                    auxHiddenArgument = CType(row.FindControl("auxHiddenArgument"), HiddenField)
    
                    bt.CommandArgument = auxRnd
                    auxHiddenArgument.Value = auxRnd
                Next
            End If
    
    Depois no RowCommand, "basta" procurares em todas as rows da gridview onde é k o CommandArgument do botão é igual ao hidden field, qdo encontrar, procura a caixa de texto nessa linha e lê o valor

    Código:
        Protected Sub GridView_pedidos_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView_pedidos.RowCommand
            If (e.CommandName = "BotaoPedir") Then
                Dim txt As String = ""
                Dim auxHiddenArgument As String = ""
    
                For Each row As GridViewRow In GridView_pedidos.Rows
                    auxHiddenArgument = CType(row.FindControl("auxHiddenArgument"), HiddenField).Value
                    If (e.CommandArgument = auxHiddenArgument) Then 'encontrou o botão k fez o pedido
                        txt = CType(row.FindControl("Txt_Quantidade"), TextBox).Text
                        Exit For 'forçar saida do ciclo
                    End If
                Next
    
                Me.Lbl_teste.Text = txt
            End If
        End Sub
    acredito k existam maneiras bem mais fáceis e espero k era isto k kerias fazer :joker:
     
    Última edição: 7 de Junho de 2007
  4. alfinete

    alfinete Power Member

    thanks , ja funciona
    :):):):)
     

Partilhar esta Página