Ir para conteúdo

POWERED BY:

Arquivado

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

Haberbeck

Comparar Tables do mesmo DataSet

Recommended Posts

Olá,Tenho um DataSet com dois tables. Preciso comparar um campo comum entre eles para preencher um checkbox do meu DataGrid.Exemplo:Se DataSet.Tables(0).Rows(0)("id") = DataSet.Tables(1).Rows(0)("id") Então CheckBox.Checked = Trueisso seria um exemplo para uma linha, mas como para comparar todos?[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

você terá q fazer um for dentro de outro.. por exemplo:For i as integer = 0 to DataSet.Tables(0).Rows.Count - 1 For x as integer = 0 to DataSet.Tables(1).Rows.Count -1 If DataSet.Tables(0).Rows(i).Item("Id") = DataSet.Tables(1).Rows(x).Item("id") End If NextNext

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá DiFalco,

 

Fiz o For ...coloquei ele no itemdatabound mas ele está executando mtas vezes. Veja o resultado desse meu For:

 

For i = 0 To ds.Tables(0).Rows.Count - 1				For j = 0 To ds.Tables(1).Rows.Count - 1				   Response.Write("<br>" & ds.Tables(0).Rows(i)("ID") & " - " & ds.Tables(1).Rows(j)("ID"))				Next			Next

 

 

Print na tela:

 

680 - 478

680 - 680

748 - 478

748 - 680

478 - 478

478 - 680

680 - 478

680 - 680

748 - 478

748 - 680

478 - 478

478 - 680

680 - 478

680 - 680

748 - 478

748 - 680

478 - 478

478 - 680

 

Ele está executando 3 vezes o meu for, parece que é a quantidade de registros da tabela1

 

Dados da tabela1:

680

748

478

 

Dados da tabela2:

478

680

 

Onde coloco esse for ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa DiFalco,

Está no ItemDataBound do meu DataGrid. Coloquei um Response.Write para exemplificar, mas está executando 3 vezes mesmo =S

segue o código do evento:

 

Private Sub dgModulo_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgModulo.ItemDataBound		Dim i, j As Integer		If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then			Dim chkS As CheckBox = e.Item.FindControl("chkS")			For i = 0 To ds.Tables(0).Rows.Count - 1				For j = 0 To ds.Tables(1).Rows.Count - 1					Response.Write("<br>" & ds.Tables(0).Rows(i)("ID") & " - " & ds.Tables(1).Rows(j)("ID"))				Next			Next		End If	End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

me explica direito o q você quer fazer.. pra q você quer comparar essas tabelas ?? ela tá repetindo 3x pq tá no ItemDataBound do DataGrid q sempre é acessado quando o DataGrid recebe uma linha de dados nova e como aparentemente esse DataGrid vai ficar com 3 linhas ele vai fazer o For 3x....me explica direitinho o q você pretende para q eu possa te ajudar...[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

DiFalco,

 

Tenho um DataGrid que listo em uma coluna os módulos cadastrados e em outra coluna de checkbox para a pessoa dar permissão/tirar.

 

Quero pegar os registros do meu banco de dados e trazer para essa coluna de check box, preenchida de acordo com os módulos que a pessoa tiver permissão, entendeu?

 

Na minha procedure retorno dois select's, o primeiro com os modulos cadastrados e o segundo com os modulos que a pessoa tem permissão, por isso queria comparar para deixar o CheckBox como 'checked'

 

O resultado final seria algo como essa imagem q achei na net:

Imagem Postada

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ahhhhhhh!!!Totalmente diferente do q eu tinha entendido de primeira..entao você tem q fazer assim... For i = 0 to DS.Tables(0).Rows.Count - 1 if e.Item.Cells(0).Text = DS.Tables(0).Rows(i)("id") then DirectCast(e.Item.Cells(1).FindControl("NomeDaCheckBox"), CheckBox).Checked = True exit For end ifNextvê se é isso..[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

DiFalco,esse e.Item.Cells(0).Text está sempre vindo "" vazio, é a primeira célular do meu datagrid né?Troquei pelo Cells(1) e também está vindo vazio. Oque posso fazer?Já o valor do DS.Tables(0).Rows(i)("id") está vindo certo com o código do meu módulo.Sendo que... se eu comento esse for, meu grid é preenchido normalmente![]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

DiFalco,Seu for está certo só o Tables(0) que estava errado. Troquei por Tables(1) que é o meu segundo select e FUNFOUUUU!!!Quero muito agradecer o seu emprenho!![]'s

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.