Ir para conteúdo

POWERED BY:

Arquivado

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

Diogo T Machado

Rolagem da div acompanhar gridview

Recommended Posts

Boa tarde a todos estou com um problema com a scroll de um div exemplo:

tenho um gridview e ele esta dentro de uma div que me da uma rolagem quando ele

passa do tamanho dela!, como é uma grid de multiplas edições nao posso usar paginação, mas sao muitos registros, eu criei uma busca que seleciona

a linha toda do registro encontrado, mas eu tenho que descer com a rolagem manual! queria fazer isso automatico!, buscar na grid e a barra pocisionar

aonde o registro estiver!, tem como?, algum java script? Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diogo, usando javascript tem como. Abaixo segue uma luz para ver se ajuda.

 

<body>
<script language="javascript">
function vaipara()
{
document.getElementById('container').scrollTop = document.getElementById('itemEscolhidoID').offsetTop;
}
</script>
<a href="java script:vaipara();">olá</a><br />
<div id="container" style="overflow: auto; height: 100px; width:300px;">
<table width="200" border="1" cellspacing="0" cellpadding="0">
  <tr>
	<td>1</td>
  </tr>
  <tr>
	<td>2</td>
  </tr>
  <tr>
	<td>3</td>
  </tr>
  <tr>
	<td>4</td>
  </tr>
  <tr>
	<td>5</td>
  </tr>
  <tr>
	<td id="itemEscolhidoID">6</td>
  </tr>
  <tr>
	<td>7</td>
  </tr>
  <tr>
	<td>8</td>
  </tr>
  <tr>
	<td>9</td>
  </tr>
  <tr>
	<td >10</td>
  </tr>
</table>
</div>

</body>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, mas para isto funcionar!, a minha table tem que ter id no <td>, agora no caso da minha

que monta a grid em tempo de execucao e fica assim:

 

<table cellspacing="0" cellpadding="3" rules="cols" border="1" id="WucNocaPesquisa_gvPesquisa" style="background-color:White;border-color:#999999;border-width:1px;border-style:None;font-size:8pt;height:167px;width:830px;border-collapse:collapse;">
	<tr style="color:White;background-color:#000084;font-weight:bold;">
		<th align="left" scope="col">Código</th><th align="left" scope="col">Descrição</th><th align="left" scope="col">Linha     </th><th align="left" scope="col">Und.</th><th align="left" scope="col">Preço</th><th align="left" scope="col">Tabela</th><th align="left" scope="col">Quantitade</th><th align="left" scope="col">Formula</th>

	</tr><tr style="color:Black;background-color:#EEEEEE;">
		<td>101483      </td><td>COMPASSO 3 FUNCOES EST.PLAST.</td><td>LINHA ARTE&COR</td><td>UN </td><td>4</td><td>314  </td><td><input name="WucNocaPesquisa$gvPesquisa$ctl02$ctl00" type="text" title="Quantitade" /></td><td><input name="WucNocaPesquisa$gvPesquisa$ctl02$ctl01" type="text" title="Formula" /></td>
	</tr><tr style="color:Black;background-color:Gainsboro;">
		<td>10602BC     </td><td>COMPASSO 2 FUNCOES BLISTER</td><td>LINHA ARTE&COR</td><td>UN </td><td>3,13</td><td>313  </td><td><input name="WucNocaPesquisa$gvPesquisa$ctl03$ctl00" type="text" title="Quantitade" /></td><td><input name="WucNocaPesquisa$gvPesquisa$ctl03$ctl01" type="text" title="Formula" /></td>

	</tr><tr style="color:Black;background-color:#EEEEEE;">
		<td>1264        </td><td>AVENTAL ESCOLAR-CORES SORTIDAS</td><td>LINHA ARTE&COR</td><td>UN </td><td>1,8</td><td>88   </td><td><input name="WucNocaPesquisa$gvPesquisa$ctl04$ctl00" type="text" title="Quantitade" /></td><td><input name="WucNocaPesquisa$gvPesquisa$ctl04$ctl01" type="text" title="Formula" /></td>
	</tr>

 

 

Como vou fazer?, msm assim! vlw pela dica! espero que agora surja uma luz! XENON!, kkk abraco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diogo, como o gridview gera um monte de códigos sujos, acredito que a melhor maneira se usando "gridViewID.AutoGenerateColumns = false;" e para contruir as linhas e colunas tenha q usar o itemTemplate e cada conteudo da TD colocar dentro de uma DIV com o id que tu quer montar...

 

Não se se entendeste mas acho que esse caminho é o mais simples.

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao Cazanova, mas a minha grid! eu estou preenchendo via codigo!, o AutoGenerateColumns ja esta setado como false

tenho todo uma estrutura que me preenche esse gridi de acordo com meus filtros que sao passados pra um select

e retornado num data reader, e ai sim, preencho minha grid ta aqui o codigo disso que te falei!

 

 

Configura a grid!

for (int i = 0; i < pesq.Campos.Count; i++)
		{
			BoundField col = new BoundField();
			col.DataField = pesq.Campos[i].ToString();
			col.HeaderText = pesq.Titulos[i].ToString();
			col.HeaderStyle.HorizontalAlign = HorizontalAlign.Left;
			col.HtmlEncode = false;
			col.ReadOnly = true;
			//if (pesq.Campos[i].ToString() == "CodTabPc")
				//col.Visible = false;
			gvPesquisa.Columns.Add(col);
		}

 

Preenche a grid!

 

private void Executa(int Ind, string Valor)
	{
		string Campo = pesq.PesqCampos[Ind].ToString();
		if (Ind != 2)
		{
			if (pesq.Mascaras != null)
				Valor = FormatMaskText.FormatMask(Valor,
					pesq.Mascaras[Ind].ToString());
		}

		if (pesq.SqlNotIn == "")
		cm.CommandText = string.Format(pesq.Sql, Campo, Valor, Funcoes.Usuario().CodAgentAtv);
		else
		cm.CommandText = string.Format(pesq.Sql, Campo, Valor, pesq.SqlNotIn, Funcoes.Usuario().CodAgentAtv);
		
		
		cn.Open();
		SqlDataReader DR = cm.ExecuteReader();
		gvPesquisa.DataSource = DR;
		gvPesquisa.DataBind();
		Button3.Enabled = true;
		Button4.Enabled = true;
	}

 

 

Agora se tiver algum modo de via codigo eu der este ID para o <td> que eu crio! acho que iria funcionar? nao eh?

vai cara veste a camisa ai comigo!, rsrsr, você tem que ver a guerra que eu venci junto com o Renato Guimaraes, que até

o Fabio Galante Mãns me mandou um e mail de pois perguntando como a gente fez!, pra fechar uma janela modal dar um post

e retorna os itens dela! "automatico", bacana!, bom espero que de certo dessa vez tbm!, vlw!, abraco!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consegui colocar nome na TD, pq o nome gerado é aleatorio e o aspnet é que fornece.

Mas vamos ver se ajuda, montei um esquema onde ele escreve um <SPAN> dentro da TD e nele colocamos um CLASS que vai ser o identificador, ja que nao da para colocar na TD e o ID do span e gerado automaticamente.

 

GRIDVIEW ASPX

<asp:GridView 
						CssClass="table-list" 
						ID="gvSession" 
						runat="server" 
						OnRowCommand="List_Commands" 
						OnDataBound="gvSession_OnDataBound" 
						OnRowDataBound="gvSession_OnRowDataBound">
						<Columns>
							<asp:TemplateField HeaderText="Nome">
								<ItemTemplate>
									<asp:Label ID="lblSessionName" runat="server"></asp:Label> // Vai escrever um SPAN com um CLASS que vai receber o ID
								</ItemTemplate>
							</asp:TemplateField>

GRIDVIEW ASPX.CS

protected void gvSession_OnRowDataBound(object sender, GridViewRowEventArgs e)
		{
			if (e.Row.RowType == DataControlRowType.DataRow)
			{
				DataRowView drv = e.Row.DataItem as DataRowView;
				Label lblSessionName = e.Row.FindControl("lblSessionName") as Label;

				string idArgument = drv["id"].ToString();

				if (lblSessionName != null)
				{
					lblSessionName.Text = drv["name"].ToString();
					lblSessionName.CssClass = "nome-" + drv["id"].ToString();

HTML GERADO + SCRIPT para pegar a CLASS CSS

<body>
<script language="javascript">
function vaipara(id)
{
document.getElementById('container').scrollTop = document.getElementsByClassName(id)[1];
}
document.getElementsByClassName = function(clsName)
{
	var retVal = new Array();
	var elements = document.getElementsByTagName("*");
	for(var i = 0;i < elements.length;i++)
	{		
		if(elements[i].className.indexOf(" ") >= 0)
		{
			var classes = elements[i].className.split(" ");
			for(var j = 0;j < classes.length;j++)
			{
				if(classes[j] == clsName)
					retVal.push(elements[i]);
			}
		}
		else 
		{
			if(elements[i].className == clsName)
			{
				retVal.push(elements[i]); // indice 0 do ARRAY que e retornado. pega o tipo de elemento HTML
 				retVal.push(elements[i-1].offsetTop); // indice 1 do ARRAY que e retornado Pega a posicao da TD pois e um elemento a menos q o DIV
			}
		}
	}
	return retVal;
}
</script>
<a href="java script:vaipara('identidicador-0');">olá</a><br />
<div id="container" style="overflow: auto; height: 100px; width:300px;">
<table width="200" border="1" cellspacing="0" cellpadding="0">
  <tr>
	<td>1</td>
  </tr>
  <tr>
	<td>2</td>
  </tr>
  <tr>
	<td>3</td>
  </tr>
  <tr>
	<td>4</td>
  </tr>
  <tr>
	<td>5</td>
  </tr>
  <tr>
	<td><span class="identidicador-0">6</span></td>
  </tr>
  <tr>
	<td>7</td>
  </tr>
  <tr>
	<td>8</td>
  </tr>
  <tr>
	<td>9</td>
  </tr>
  <tr>
	<td >10</td>
  </tr>
</table>
</div>

</body>

É um pouco de gambiarra, mas é uma saida para o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw, mas se olhar o contexto nao eh bem isso q estou precisando!

dos jeitos que foram abordados!, consigo mexer na rolagem da janela

nao na de uma div dentro de uma janela! que no caso! tem uma grid dentro

que ao se expandir faz com que o scroll dessa divi apareca!

acho mesmo que nesse caso nao tem soluçã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.