Ir para conteúdo

POWERED BY:

Arquivado

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

Reginaldo

Fazendo um DataGrid

Recommended Posts

pessoal eu to fazendo um sistema aki que precisa do famoso datagrid ...

 

mas em formato web ele não existe.. bom até existe... "em flash" mas trabalhar flash com qualquer linguagem dinamica é repugnante.. tu só passa nervoso...

 

então to tentando faze usando o componente de formulario "select" e a paginação dos dados com "option"

 

e ai da pra fazer e usando um pouco de css fica igualsinho... só tem um problema: "posicionamento dos dados"

 

exemplo:

 

Imagem Postada

 

ACHO QUE DEU PRA ENTENDER...

 

O QUE PRECISO É RESERVAR UM ESPAÇO DE "X" CARACTERES PRA CADA INFORMAÇÃO

MAS QUANDO A INFORMAÇÃO VEM, ELA NÃO PODE SIMPLISMENTE EMPURRAR A OUTRA PRA FRENTE

A INFORMAÇÃO DEVE OCUPAR AQUELE ESPAÇO SEM EMPURRAR A PROXIMA....

 

TIPO, QUER RESERVAR 50 CARACTERES PRO "NOME"

SUPONHA QUE O NOME USE 35...

SÓ QUE ESTES 35 TEM QUE SER DOS 50 JA RESERVADOS... RESTANDO 15 APÓS O FINAL DA INFORMAÇÃO...

E ASSIM VAI FICAR TUDO ALINHADINHO

 

AI ALGUEM VAI ME FALAR.. E SE A INFORMAÇÃO "NOME" PRECISAR DE MAIS DE 50 DIGITOS ? ..

BOM ISSO NÃO É PROBLEMA POIS NO CADASTRO JA LIMITEI CADA CAMPO Á SUA NECESSIDADE.. SE PRECISAR DE MAIS O OPERADOR VAI ABREVIAR NO CADASTRO...

 

 

BOM ALGUEM PODE ME AJUDAR COM ISSO ?

 

FICO MUITO GRATO http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que seria bom é você colocar um TRIM em todos os camps,

pra quem não conhece ainda TRIM é uma função do VB que limpa tudo que for espaço em uma string.

usa-se assim:

<%=TRIM(STRING)%>

no caso de DB

<%=TRIM(RS("CAMPO"))%>

 

e dpois do codigo asp jogue uma quantidade de &vbcrlf < que é o espaço em 'codigo'...

 

bem existe outro problema a ser tratado, a quantidade de caracteres.... pois se um nome for maio vai empurrar da mesma forma...

então você precisa criar uma função aonde conta a quantidade de caracteres de um campo e preencha com espaço o que falta

vamos pensar em algo

 

<%
private function contaChars(txt,n)
	valaux = len(txt) - n
	for i  = 0 to valaux
	txt = txt & "&vbcrlf"
	next
	contaChars = txt
end function
%>

<select name="sssw" size=10>
<%do while not rs.eof%>
<option value = ''><%=contaChars(trim(rs("Nome")),50)%>|<%=contaChars(trim(rs("Telefone")),30)%>|<%=contaCHars(trim(rs("Sexo")),2)%></option>
<%rs.movenext
loop%>
</select>

no caso acima a função contaChars precisa dos seguintes parametros txt (eh a string ja com o trim), e n ( o espaço que você quer dar entre os campos)..

bem essa é a lógica principal, dai você monta seu codigo, se precisar de ajuda posta ai....

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas nao da so para levar em conta o numero de caracteres pois nem todos ocupam o mesmo espaço

Compartilhar este post


Link para o post
Compartilhar em outros sites

mais a função feita varia de acordo com o tamanho da string...

na linha

valaux = len(txt) - n

ele identifica o tamanho da string e tira pelo tamanho, e o resto eu adiciono com espaços...

ta clara a função

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu sei maux

 

o que estou dizendo é que os caracteres ocupam espaços diferentes

 

vou colocar aqui uma string com 10 caracteres iguais para voce entender o que digo

 

aaaaaaaaaa

xxxxxxxxxx

iiiiiiiiii

mmmmmmmmmm

 

veja que "a" e "x" ocupam o mesmo espaço mas "i" e "m" não

 

-------------------------------------------

 

Editado: Na hora de digitar "a" e "x" estavam com o mesmo tamanho mas na visualização do post nao, mas o que importa é a ideia que estou passando

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi Mario.. eu tinha achado a solução do maux tão legal... mas realmente você tem razão

 

a expressão IIIII

é tem o mesmo numero de digitos mas é menor que

a expressão MMMMM

 

será que tem alguma forma de resolver isto ?

 

a microsoft nos atrapalha muito com as regras malucas de programação no asp...

 

mas com certeza ajuda tambem.. deve ter uma solução pra isso..

 

será que não da pra medir o comprimento de uma string ?

 

Obrigado a vocês

 

 

uma teoria poderia ser aquela que o microsoft word utiliza nos textos... que é o espaçamento..

 

poderiamos pegar o tamanho da maior letra.. que eu axo que é o "M" ou "W" sei la..

 

e alocar este espaço pra todos os caracteres... e letras menores como no caso do "I" ficariam centralizadas neste espaço ... tipo o texto justificado do word...

 

mas não faço a menor ideia de como fazer isto...

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi mario...

bem não existe nenhum grid em html nem asp bascio, mais agnt pode inventa uns.. heheh..

bem, criei 2 exemplos que você pode usar.. veja na pagina abaixo

http://siderd.com/linhas/

 

segue o codigo fonte:

<%
cn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& server.mappath("tst.mdb")
set conexao = server.CreateObject("adodb.connection")
set rs = server.CreateObject("adodb.recordset")
conexao.open cn
sql = "select * from usu"
rs.open sql,conexao
%>
<style>
.selecionado{background-color:#999999}
.tb {
	border-top-width: thin;
	border-right-width: thin;
	border-bottom-width: thin;
	border-left-width: thin;
	border-top-style: none;
	border-right-style: solid;
	border-bottom-style: none;
	border-left-style: none;
	border-top-color: #000000;
	border-right-color: #000000;
	border-bottom-color: #000000;
	border-left-color: #000000;
}
</style>
<script>
function td(id){
s.a.value = id;
s.b.value = id;
s.c.value = id;
}
function md(id){
for(i=1;i<tot+1;i++){
	eval('tr'+i).className='';
}
eval(id).className='selecionado';
}
</script>

Clique no conteudo de ambos exeplos para ver. <br>
<form name="s">
<table width="152" border="0">
  <tr>
	<td width="39" align="center"><strong>Cod.</strong></td>
	<td width="40" align="center"><strong>Nome</strong></td>
	<td width="59" align="center"><strong>Telefone</strong></td>
  </tr>
  <tr>
	<td align="center"><select name="a" size=10 onclick="td(this.value)">
	  <%do while not rs.eof%>
	  <option value = '<%=rs("cod")%>'><%=rs(0)%></option>
	  <%rs.movenext
loop
rs.movefirst%>
	</select></td>
	<td align="center"><select name="b" size=10 onChange="td(this.value)">
	  <%do while not rs.eof%>
	  <option value = '<%=rs("cod")%>'><%=rs(1)%></option>
	  <%rs.movenext
loop
rs.movefirst%>
	</select></td>
	<td align="center"><select name="c" size=10 onChange="td(this.value)">
	  <%do while not rs.eof%>
	  <option value = '<%=rs("cod")%>'><%=rs(2)%></option>
	  <%rs.movenext
loop%>
	</select></td>
  </tr>
</table>
<p><strong>OU</strong></p>
<table width="253" height="108" border="0" cellpadding="0" cellspacing="0">
  <tr>
	<td align="center" bgcolor="#CCCCCC" class="tb"><strong>COD.</strong></td>
	<td align="center" bgcolor="#CCCCCC" class="tb"><strong>Nome.</strong></td>
	<td align="center" bgcolor="#CCCCCC" class="tb"><strong>Fone.</strong></td>
  </tr>
  <%rs.movefirst
  do while not rs.eof
  a =a + 1
  %>
  <tr id="tr<%=a%>" onClick="md(this);" style="cursor:default">
	<td align="center" class="tb"><%=rs(0)%></td>
	<td align="center" class="tb"><%=rs(1)%></td>
	<td align="center" class="tb"><%=rs(2)%></td>
  </tr>
  <%rs.movenext
  loop%>
</table>
<script>
var tot = <%=a%>;
</script>
<p> </p>
</form>

abrass

Compartilhar este post


Link para o post
Compartilhar em outros sites

hahaha .. oloko maux... agora você se superou ein.. rrsrs

 

eu numca ia pensa num negocio desses... esse primeiro exemplo é muito legal..

 

se não tiver como alocar espaço individual pra cada digito o esquema vai acabar sendo este ai mesmo...

 

bom eu to pesquisando... se descobrir outra forma eu posto ai pra gente..

 

 

flw.. abraço .. e obrigado..

 

bom fm de semana

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehehehe

beleza...

se precisar de alguma ajuda posta ai..

e se encontrar algo tbm por favor..

ehehe

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

com certeza se encontrar algo poste para a gente ver

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom ... a não ser pelo datagrid do flash ja vi que não existe outra forma mesmo.. a solução do Maux parece ser a melhor até o momento...

 

agora vai da criatividade de cada um...

 

abraço a todos.. muito grato pela ajuda :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Maux você poderia postar o codigo completo deste exmplo que você fez ?

 

eu montei aqui seguindo a risca mas a seleção não anda junto em todas as caixas igual no seu....

 

posta ai pra eu ver por favor....

 

forte abraço.

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.