Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
Não achei nada a respeito..
Estou precisando fazer um Formulário de Pedidos, onde os produtos são listados vindos da Base de dados, em uma Lista.
Em cada item preciso de apenas um campo textbox para inserir a quantidade de itens deste produto.
Então meus problemas são:
1. Como criar textbox e vincular com o Id do produto
2. Como recuperar o valor deste textbox junto com o id de um determinado produto.
Estava listando os produtos em um DataList, mas não sei se este é o caminho.
Alguma Luz?
Sinceramente acho que nunca usei um DataList, normalmente para esses casos utilizo o GridView mesmo, mas pelo que dei uma olhada o procedimento para ser parecido. Tenta isso:
No ItemTemplate do DataList você pode inserir um TextBox que você pode controlar o ID pela propriedade DataKeyField do seu DataList. No GridView eu acho um pouco mais intuitivo, mas o procedimento parece ser o mesmo.
da uma olhada nesses artigos o primeiro mostra bem como fazer no GridView, e o segundo mostra como fazer no DataList:
http://imasters.com.br/artigo/12343/aspnet/integrando_controles_de_validacao_no_gridview/
http://csharpprogramando.blogspot.com/2009/02/artigo-editando-templates-datalist.html
Espero ter ajudado!!!
Interessante as sugestões dadas.. mas nao sei se algum dos links se refere ao que eu preciso.
os liks se referiam mais a edicao do proprio registro, mas preciso na verdade, atraves de uma lista de produtos, adicionar quantidades e fazer um insert na tabela Pedidos.
entao em cada produto, teria um textbox para o usuario adicionar a Quantidade, no final enviar tudo.
Estou usando o datalist para listar os produtos, pois o cliente queria em 2 colunas, e com datalist fica bem facil fazer isso.
abaixo uma imagem de como esta o formulário:
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.ibservi.com.br/pedidos.gif&key=aa1a186cff79c8e901975bebcdbf5bb72adbe2853de86bb4e4d731ea023310f2" alt="Imagem Postada" />
O que estou fazendo é migrar um sistema de pedidos que ele tem de um Excel para uma aplicação web. estou tentando fazer o mais parecido.
se tiverem mais dicas.. Agradeço muito.
Então ficou até mais fácil, você vai no ItemTemplate do próprio DataList e insere o TextBox e depois sai varrendo linha a linha e lê o TextBox que você inseriu, daí quando ler, se o valor for mais que 0 você já executa o código para gravar.
for (int i = 0; i < DataList1.Items.Count; i++)
{
//Executa o código para gerar o valor total e grava no seu banco.
}
Bem interessante essa forma.. com isso me deu uma luz que pode resolver. nao é o ideal mas acho que vai resolver.
Ao lado do campo, adicionei um botao, com um comando OnUpdateCommand="DataList1_EditCommand"
e atraves do metodo, consigo recuperar o Id e a quantidade inserida.
O unico problema é que em cada linha de produto o cara vai ter q clicar no botao.
O interessante seria um botao no final.. e usar a tua ideia, só que nao sei como fazer isso.
Como ter um botao no final ou fora do datalist, que recupere entao linha por linha do o campo textbox junto com o Id do produto?
dilonghi
Veja o exemplo, eu criei uma tabela [Tabela1] com os campos codigo e descricao e listei no DataList, organizei tudo dentro de uma tabela html no ItemTemplate. No final coloquei um botão que varre as linhas do DataList e executa um código qualquer para gravar os itens do pedido.
ASPX
<asp:DataList ID="DataList1" runat="server" DataKeyField="codigo"
DataSourceID="SqlDataSource1" Width="322px">
<ItemTemplate>
<table style="width:100%;">
<tr>
<td class="style1">
<asp:TextBox ID="TextBox1" runat="server" Width="38px"></asp:TextBox>
</td>
<td>
<asp:Label ID="descricaoLabel" runat="server" Text='<%# Eval("descricao") %>' />
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:bd1ConnectionString %>"
ProviderName="<%$ ConnectionStrings:bd1ConnectionString.ProviderName %>"
SelectCommand="SELECT codigo, descricao FROM [Tabela1]">
</asp:SqlDataSource>
<br />CodeBehind
protected void Button1_Click(object sender, EventArgs e)
{
//Varre todas as linhas do DataList
for (int i = 0; i < DataList1.Items.Count; i++)
{
//Resgata o valor do TextBox da Linha i
string qtd = ((TextBox)DataList1.Items[i].FindControl("TextBox1")).Text;
//Verifica se o TextBox está preenchido.
if (qtd != string.Empty)
{
//Recupera o código
string codigo = DataList1.DataKeys[i].ToString();
//Executa o Insert do seu pedido.
}
}
}
Veja se ajuda....
ola rockysp
Muito obrigado pelas respostas.. com suas dicas, funcionou perfeitamente.. sem a necessidade de ter um Enviar em cada iten..
um unico metodo, pega todos produtos Diferentes de Zero.. e faz o insert na tabela de Itens do Pedido..
Grande Abraço
cara,vai depender de como você quer exibir esses produtos e como esta sua base de dados... normalmente um formulario de pedidos é exibido no formato mestre-detalhe
Vou deixar abaixo alguns links que podem te ajudar
http://www.macoratti.net/aspn2_gv.htm
http://www.macoratti.net/07/05/aspn_3md.htm
http://msdn.microsoft.com/pt-br/library/cc580599.aspx
http://www.macoratti.net/07/07/aspn_frv.htm
http://www.macoratti.net/aspn_gsd.htm