RECUPERAR TEXT DATALIST

MAXCIM 17/10/2017 22:12:50
#477206
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
KERPLUNK 18/10/2017 09:21:47
#477210
Resposta escolhida
Como está o código ASPX do seu grid?
MAXCIM 18/10/2017 09:26:40
#477212
<%@ 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>
KERPLUNK 18/10/2017 09:32:53
#477213
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...
MAXCIM 18/10/2017 09:37:51
#477214
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?

KERPLUNK 18/10/2017 10:14:08
#477216
Você poderia tentar criar uma WebAPI e algum framework UI como Angular, React, Knockout ou similar.
MAXCIM 18/10/2017 10:19:06
#477217
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?
KERPLUNK 18/10/2017 10:31:25
#477218
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).
Tópico encerrado , respostas não são mais permitidas