Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fernando Nassar

[Resolvido] Como Recuperar Dados do DataTable Ordenado

Recommended Posts

Galera boa tarde,

 

Estou desenvolvendo uma aplicação que emite pedidos on-line em aspx com vb.net. É uma aplicação bem simples preciso gravar os dados e os itens do pedidos.

 

Tenho um GridView onde o usuário vai adicionando os produtos do pedido através de um código interno. Pois bem o usuário pode fazer a inclusão de forma aleatório, porém quando vou listar os produtos que ele incluiu eu tenho que ordenar pelo código interno crescente. O grid eu populo através de um datatable, então encontrei uma funcao que ordena datatable, segue abaixo:

Private Function AlphabeticSort(ByVal dtTable As DataTable, ByVal sortOrder As Integer) As DataTable 
Dim dsSorted As New DataSet
Dim columnKey As String = "CODTTRA"
Dim sortDirection As String = ""
Dim sortFormat As String = "{0} {1}"
Select Case sortOrder
Case 0
sortDirection = "ASC"
Case 1
sortDirection = "DESC"
Case Else
sortDirection = "ASC"
End Select
dtTable.DefaultView.Sort = String.Format(sortFormat, columnKey, sortDirection)
Return dtTable.DefaultView.Table
End Function

Essa função funciona perfeitamente, consigo mostrar o GridView ordenado pelo código, porém o problema surge quando vou gravar os itens do produto que também devo gravar de forma ordenada pelo código interno, então fiz a seguinte função:

 

Dim objDataTableItens As System.Data.DataTable
objDataTableItens = Me.ViewState("DataTableItem")

For i = 0 To objDataTableItens.Rows.Count - 1
SQLStr = ""

SQLStr = SQLStr & " Insert into tb_produto(idProduto) " 
SQLStr = SQLStr & " VALUES(objDataTableItens.Rows(i).Item("ID").ToString)

cmd1.CommandText = SQLStr
cmd1.ExecuteNonQuery()
Next

Porém ao percorrer linha a linha do DataTable, ele pega a ordem de inclusão do produto e não em ordem pelo código. Como posso fazer para resolver esse problema?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Movido Plataforma .NET http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma .NET » Web Applications

 

Fernando Nassar, seja bem vindo ao Fórum iMasters, de uma olhada em nossas regras: Regras do Fórum iMasters

 

Não entendi bem, não disse que sua função de ornação funciona. Não bastaria ordenar seus itens antes de gravar?

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Sim a função de ordenação funciona perfeitamente, porém a segunda função onde percorro todo o grid para gravar os produtos, ela não respeita a ordenação da primeira função, então ele grava os produtos na ordem que o usuário inseriu os produtos no grid.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para entender melhor um pouco, a ultima tentativa que fiz foi a seguinte :

 

Dim objDataTableItens As System.Data.DataTable
objDataTableItens = Me.ViewState("DataTableItem")

objDataTableItens =AlphabeticSort(objDataTableItens ,0)   '<-- Chamo a função que ordena o DataTable, antes de percorre-lo, e inserir os produtos.
For i = 0 To objDataTableItens.Rows.Count - 1				  
SQLStr = ""

SQLStr = SQLStr & " Insert into tb_produto(idProduto) " 
SQLStr = SQLStr & " VALUES(objDataTableItens.Rows(i).Item("ID").ToString)  'Já dentro do laço, começo fazer as inclusões dos produtos linha a linha, porém ao passar a referencia da linha, ele pega o valor original (a ordem que foi incluidos os produtos no grid) e não em ordem pelo código

cmd1.CommandText = SQLStr
cmd1.ExecuteNonQuery()
Next

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara deu certo, joguei o valor do DataView, depois transferi os dados do DataView para um novo datatable e rolo, muito obrigado pela ajuda, estou postando o código de como ficou.

 

objDataTableItensDES = AlphabeticSort(Me.ViewState("DataTableItem"),0)

		Dim DV As New DataView(objDataTableItensDES.Copy)

		DV.Sort = "CAMPO ASC"
		Dim objDataTableItens As New DataTable

		objDataTableItens = DV.ToTable

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.