alfinete
06-06-2007, 21:49
http://img503.imageshack.us/img503/2002/gridhk1.th.jpg (http://img503.imageshack.us/my.php?image=gridhk1.jpg)
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
alfinete
07-06-2007, 15:39
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
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
<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:
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
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:
alfinete
08-06-2007, 01:08
thanks , ja funciona
:):):):)