RECUPERAR TEXT DATALIST
olá amigos,
como recupero valor de um text no evento DataList1_ItemCommand ?
testei o código a seguir , mas txtQTD e ProdQTD vem sempre vazio
Protected Sub DataList1_ItemCommand(ByVal source As Object,
ByVal e As DataListCommandEventArgs) Handles DataList2.ItemCommand
If e.CommandName = [Ô]AddToCart[Ô] Then
Dim lbl As Label = DirectCast(e.Item.FindControl([Ô]ProdID[Ô]), Label)
Dim TXT As TextBox = DirectCast(e.Item.FindControl([Ô]txtQTD[Ô]), TextBox)
Dim TXTQTD As TextBox = DirectCast(e.Item.FindControl([Ô]ProdQTD[Ô]), TextBox)
Dim ID As Integer = lbl.Text
If TXTQTD Is Nothing Then
Else
Dim QTD = TXTQTD.Text
End If
End If
End Sub
como recupero valor de um text no evento DataList1_ItemCommand ?
testei o código a seguir , mas txtQTD e ProdQTD vem sempre vazio
Protected Sub DataList1_ItemCommand(ByVal source As Object,
ByVal e As DataListCommandEventArgs) Handles DataList2.ItemCommand
If e.CommandName = [Ô]AddToCart[Ô] Then
Dim lbl As Label = DirectCast(e.Item.FindControl([Ô]ProdID[Ô]), Label)
Dim TXT As TextBox = DirectCast(e.Item.FindControl([Ô]txtQTD[Ô]), TextBox)
Dim TXTQTD As TextBox = DirectCast(e.Item.FindControl([Ô]ProdQTD[Ô]), TextBox)
Dim ID As Integer = lbl.Text
If TXTQTD Is Nothing Then
Else
Dim QTD = TXTQTD.Text
End If
End If
End Sub
Como está o código ASPX do seu grid?
<%@ Page Language=[Ô]vb[Ô] AutoEventWireup=[Ô]false[Ô] CodeBehind=[Ô]WF_DataList.aspx.vb[Ô] Inherits=[Ô]ASPNET_TesteFerramentas.WF_DataList[Ô] MasterPageFile=[Ô]~/Site.Master[Ô] %>
<asp:Content ID=[Ô]Content1[Ô] ContentPlaceHolderID=[Ô]HeadContent[Ô] runat=[Ô]server[Ô]>
<!-- Styles -->
<link href=[Ô]Styles/novopedido.css[Ô] rel=[Ô]Stylesheet[Ô] />
</asp:Content>
<asp:Content ID=[Ô]Content2[Ô] ContentPlaceHolderID=[Ô]MainContent[Ô] runat=[Ô]server[Ô]>
<div>
<asp:DataList id=[Ô]DataList2[Ô] style=[Ô]Z-INDEX: 101; POSITION: absolute; TOP: 176px[Ô]
runat=[Ô]server[Ô] Width=[Ô]504px[Ô] RepeatColumns=[Ô]3[Ô]>
<ItemTemplate>
<TABLE width=[Ô]300[Ô] border=[Ô]0[Ô]>
<TR>
<TD vAlign=[Ô]middle[Ô] align=[Ô]right[Ô] width=[Ô]100[Ô]><A href=[ô]productdetails.aspx?ProductID=<%#DataBinder.Eval(Container.DataItem, [Ô]ID[Ô])%>[ô]><IMG height=75 src=[ô]pictures/<%#DataBinder.Eval(Container.DataItem, [Ô]Pth_img[Ô])%>[ô] width=100>
</A>
</TD>
<TD vAlign=[Ô]middle[Ô] width=[Ô]200[Ô]><A href=[ô]ProductDetails.aspx?productID=<%# DataBinder.Eval(Container.DataItem, [Ô]ID[Ô]) %>[ô]><SPAN class=[Ô]ProductListHead[Ô]><%# DataBinder.Eval(Container.DataItem, [Ô]Produto[Ô]) %></SPAN><BR>
</A><SPAN class=[Ô]ProductListItem[Ô]><B>Price: </B>
<%# DataBinder.Eval(Container.DataItem, [Ô]vlr_venda[Ô], [Ô]{0:c}[Ô]) %>
</SPAN>
<BR>
<STRONG><U><FONT color=[Ô]#0000ff[Ô]><A href=[ô]addtocart.aspx?productID=<%# DataBinder.Eval(Container.DataItem, [Ô]ID[Ô]) %>[ô]>
<SPAN class=[Ô]ProductListItem[Ô]><FONT color=[Ô]#9d0000[Ô]><B>ADD TO CART<B></FONT></SPAN>
</A></FONT></U></STRONG></B></B>
<asp:TemplateField HeaderText=[Ô]Qtd[Ô]>
<ItemTemplate>
<input type=[Ô]text[Ô] class=[Ô]quantAddItemCarrinho[Ô] onkeypress=[Ô]validate(event)[Ô] title=[Ô]Informe a quantidade. Pode conter até 3 casas decimais.[Ô] id=[Ô]txtQTD[Ô] />
</ItemTemplate>
</asp:TemplateField>
<asp:TextBox runat=[Ô]server[Ô] type=[Ô]number[Ô] ID=[Ô]ProdQTD[Ô] />
<asp:Label ID=[Ô]ProdID[Ô] commandname=[Ô]ProdID[Ô] runat=[Ô]server[Ô] Text=[ô]<%#Eval([Ô]Id[Ô]) %>[ô] />
<asp:LinkButton ID=[Ô]LinkButton1[Ô] runat=[Ô]server[Ô] CommandName=[Ô]AddToCart[Ô]>Adicionar ao Carrinho</asp:LinkButton><br/><br/>
</TD>
</TR>
</TABLE>
</ItemTemplate>
</asp:DataList>
</div>
</asp:Content>
<asp:Content ID=[Ô]Content1[Ô] ContentPlaceHolderID=[Ô]HeadContent[Ô] runat=[Ô]server[Ô]>
<!-- Styles -->
<link href=[Ô]Styles/novopedido.css[Ô] rel=[Ô]Stylesheet[Ô] />
</asp:Content>
<asp:Content ID=[Ô]Content2[Ô] ContentPlaceHolderID=[Ô]MainContent[Ô] runat=[Ô]server[Ô]>
<div>
<asp:DataList id=[Ô]DataList2[Ô] style=[Ô]Z-INDEX: 101; POSITION: absolute; TOP: 176px[Ô]
runat=[Ô]server[Ô] Width=[Ô]504px[Ô] RepeatColumns=[Ô]3[Ô]>
<ItemTemplate>
<TABLE width=[Ô]300[Ô] border=[Ô]0[Ô]>
<TR>
<TD vAlign=[Ô]middle[Ô] align=[Ô]right[Ô] width=[Ô]100[Ô]><A href=[ô]productdetails.aspx?ProductID=<%#DataBinder.Eval(Container.DataItem, [Ô]ID[Ô])%>[ô]><IMG height=75 src=[ô]pictures/<%#DataBinder.Eval(Container.DataItem, [Ô]Pth_img[Ô])%>[ô] width=100>
</A>
</TD>
<TD vAlign=[Ô]middle[Ô] width=[Ô]200[Ô]><A href=[ô]ProductDetails.aspx?productID=<%# DataBinder.Eval(Container.DataItem, [Ô]ID[Ô]) %>[ô]><SPAN class=[Ô]ProductListHead[Ô]><%# DataBinder.Eval(Container.DataItem, [Ô]Produto[Ô]) %></SPAN><BR>
</A><SPAN class=[Ô]ProductListItem[Ô]><B>Price: </B>
<%# DataBinder.Eval(Container.DataItem, [Ô]vlr_venda[Ô], [Ô]{0:c}[Ô]) %>
</SPAN>
<BR>
<STRONG><U><FONT color=[Ô]#0000ff[Ô]><A href=[ô]addtocart.aspx?productID=<%# DataBinder.Eval(Container.DataItem, [Ô]ID[Ô]) %>[ô]>
<SPAN class=[Ô]ProductListItem[Ô]><FONT color=[Ô]#9d0000[Ô]><B>ADD TO CART<B></FONT></SPAN>
</A></FONT></U></STRONG></B></B>
<asp:TemplateField HeaderText=[Ô]Qtd[Ô]>
<ItemTemplate>
<input type=[Ô]text[Ô] class=[Ô]quantAddItemCarrinho[Ô] onkeypress=[Ô]validate(event)[Ô] title=[Ô]Informe a quantidade. Pode conter até 3 casas decimais.[Ô] id=[Ô]txtQTD[Ô] />
</ItemTemplate>
</asp:TemplateField>
<asp:TextBox runat=[Ô]server[Ô] type=[Ô]number[Ô] ID=[Ô]ProdQTD[Ô] />
<asp:Label ID=[Ô]ProdID[Ô] commandname=[Ô]ProdID[Ô] runat=[Ô]server[Ô] Text=[ô]<%#Eval([Ô]Id[Ô]) %>[ô] />
<asp:LinkButton ID=[Ô]LinkButton1[Ô] runat=[Ô]server[Ô] CommandName=[Ô]AddToCart[Ô]>Adicionar ao Carrinho</asp:LinkButton><br/><br/>
</TD>
</TR>
</TABLE>
</ItemTemplate>
</asp:DataList>
</div>
</asp:Content>
txtQTD você não vai conseguir mesmo, ele não é um controle que está no server. Mas [Ô]ProdQTD[Ô] deveria estar vindo certo.
A pergunta é: Porque ainda usar WebForms? Há tantas outras formas MUITO melhores que isso...
A pergunta é: Porque ainda usar WebForms? Há tantas outras formas MUITO melhores que isso...
Oi kerplunk, ambos vem vazio quando clica.
estou usando Webforms porque tenho quase nenhuma experiencia com ASP.NET
estou iniciando isso agora, e aplicando conhecimentos que trouxo do VB( descktop)
estou estudando, testando... aplicando.
quais seriam essas outras formas?
estou usando Webforms porque tenho quase nenhuma experiencia com ASP.NET
estou iniciando isso agora, e aplicando conhecimentos que trouxo do VB( descktop)
estou estudando, testando... aplicando.
quais seriam essas outras formas?
Você poderia tentar criar uma WebAPI e algum framework UI como Angular, React, Knockout ou similar.
ainda não estou nesse nÃvel!
acho tudo isso muito bacana, mas ainda demanda muito estudo. vou me aprofundar mais nisso;
mas enquanto não assimilo essas tecnologias,teria alguma dica só para fechar esse projeto em WebForms?
acho tudo isso muito bacana, mas ainda demanda muito estudo. vou me aprofundar mais nisso;
mas enquanto não assimilo essas tecnologias,teria alguma dica só para fechar esse projeto em WebForms?
Bem, você está fazendo uma mistura de componentes server e client que está difÃcil até de entender do que se trata. O ASP:DataList não é o controle mais apropriado para o que você quer fazer, mas sim o DataGridView. Então: DataGridView e use os controles no server(runat=[Ô]server[Ô]).
Outra coisa, realmente demanda estudar para utilizar frameworks de UI, mas tudo parte de um mesmo princÃpio: Entender. O que acontece é que você ainda não diferenciou bem a separação entre UI e codebehind. Você está usando o mesmo raciocÃnio que usa para Windows forms, procedural e voltado à eventos. Então na verdade, você precisa primeiro [Ô]desaprender[Ô] isso para poder entender bem os princÃpios de programação em camadas(sim, a relação ASPX e codebehind é o esse princÃpio).
Outra coisa, realmente demanda estudar para utilizar frameworks de UI, mas tudo parte de um mesmo princÃpio: Entender. O que acontece é que você ainda não diferenciou bem a separação entre UI e codebehind. Você está usando o mesmo raciocÃnio que usa para Windows forms, procedural e voltado à eventos. Então na verdade, você precisa primeiro [Ô]desaprender[Ô] isso para poder entender bem os princÃpios de programação em camadas(sim, a relação ASPX e codebehind é o esse princÃpio).
Tópico encerrado , respostas não são mais permitidas