Ir para conteúdo

Arquivado

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

JoeJr

Paginação Flexigrid

Recommended Posts

Estou com problemas para mudar de página no Flexigrid, ele resulta os dados a partir de uma consulta mysql com LIMIT:

 

/XML
$xml  = new gerenciaXML();
$doc  = $xml->leituraXML($nmFile);
$bi_tab_codigo = $doc->getElementsByTagName('bi')->item(0)->getAttribute("codigo_tabela");


//Conexão  
$conexaoSQL = "select bi_tab_conectado, bi_con_servidor, bi_con_database, bi_con_usuario, bi_con_senha
   from bi_tabela as t
inner join bi_conexoes as c on t.bi_con_codigo = c.bi_con_codigo
 WHERE bi_tab_codigo = ".$bi_tab_codigo;
mysql_select_db($database_bi, $bi);
$Result1 = mysql_query($conexaoSQL, $bi) or die(mysql_error());
$row_conexao = mysql_fetch_assoc($Result1);
$conectado  = 0;//DataWareHouse
//--
$tabela  = nmTabela($bi_tab_codigo, $database_bi, $bi, $conectado);
$Where = condicaoWhere($doc, $database_bi, $bi, $conectado);
$exibicao = exibicao($doc, $database_bi, $bi, $conectado);
$orderBy = ordenacao($doc, $database_bi, $bi, $conectado);
//--
//Monta SQL para execução
$stringSQL = "select $exibicao from $tabela $Where $orderBy LIMIT 100";


//--Executa SQL
mysql_select_db($database_bi, $bi);
$query_fonte = $stringSQL;
$Str_fonte = mysql_query($query_fonte, $bi) or die(mysql_error());
$totalRows_Str_fonte = mysql_num_rows($Str_fonte);


//Monta colunas do select
$colunas  = array();
//--
$i = 0;
while ($i < mysql_num_fields($Str_fonte)) {
$meta = mysql_fetch_field($Str_fonte, $i);
array_push($colunas,$meta->name);
$i++;
}
$numColunas = count($colunas);
//--
$page = 1;
$total= $totalRows_Str_fonte;


header("Expires: Mon, 26 Jul 2050 05:00:00 GMT" ); 
header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" ); 
header("Cache-Control: no-cache, must-revalidate" ); 
header("Pragma: no-cache" );
header("Content-type: text/x-json");
$json = "";
$json .= "{\n";
$json .= "page: $page,\n";
$json .= "total: $total,\n";
$json .= "rows: [";
$rc = false;
//--
$x = 0;
//--
while($row_Str_fonte = mysql_fetch_assoc($Str_fonte)){
//--
if ($rc) $json .= ",";
$json .= "\n{";
$json .= "id:'".$x."',";
//--
//colunas e registros
$b=1; 
foreach($colunas as $indice=>$valor){
$conteudo = retiraTagHTML(addslashes(($row_Str_fonte[$valor])));


//Primeira coluna
if($b==1){
//primeira célula sempre será o id do banco;
//$json .= "cell:['".$row_Str_fonte['bi_fonte_id']."|IdB@ckBs'";
$json .= "cell:['".addslashes($conteudo)."'";
//--
} else if($b==$numColunas){
//Ultima coluna
$json .= ",'".addslashes($conteudo)."']";
//--
} else {
//demais colunas
$json .= ",'".addslashes($conteudo)."'"; 
}
//--
$b++;
}
//--
$json .= "}";
$rc = true;
//--
$x++;
}
//-- 
$json .= "]\n";
$json .= "}";
echo $json;
e na página onde se encontra o flexigrid está desta forma:
<table id="flex1" style="display:none"></table>
<script type="text/javascript">
conteudoBase='';
$('.flexme1').flexigrid();
$('.flexme2').flexigrid({height:'auto',striped:false});


$("#flex1").flexigrid
(
{
url: '/corporativo/servicos/bi/<?php echo $urlRequireAjax; ?>consultaBS.php?id_file=<?php echo $_GET['id_file']; ?>',
dataType: 'json',
colModel : [




//{display: 'id', name : 'iso', width : 40, sortable : false, align: 'center', hide: true}, 
  <?php 
   //descobre título das colunas no select montado
   $elementoExibe = $doc->getElementsByTagName("condicaoExibicao")->item(0)->childNodes;
$e="";
$a=0;
foreach($elementoExibe as $condExibe){


$titulo = utf8_decode($condExibe->getAttribute('tituloColuna'));
$codigo = explode("_",$condExibe->tagName);


if($a == 0){
$e.= "{display: '$titulo', name : '".$codigo[1]."', width : 80, sortable : false, align: 'left'}\r\n";
} else {
$e.= ",{display: '$titulo', name : '".$codigo[1]."', width : 80, sortable : false, align: 'left'}\r\n";
}
$a++;
}


echo $e;
?>
  




],
buttons : [
  




],


rpOptions: [10,20,30],
usepager: true,
useRp: true,
title: 'Resultado da consulta SQL', 
rp: 10,
showTableToggleBtn: true,
singleSelect: true,
width: 970,
height: 343
}
);


function test(com,grid)
{
 if($('.trSelected',grid).length==0){
alert("Selecione uma linha antes de consultar!");
return false;
 }


if (com=='Consultar dados no PeopleRank')
{
var conteudoLinha = conteudoBase.rows[0].cell;
//--
// confirm('Remover ' + $('.trSelected',grid).cell + ' items?')
// var celSelect = $('.trSelected',grid).text().split("|IdB@ckBs");
var celSelect = $('.trSelected',grid).cell;


//row.cell[idx];
alert(celSelect);
//window.top.exibeDetalhes(celSelect[0]);
}
else if (com=='Adicionar')
{
alert('Adicionar novo Item');
} 
}


function alimentaDadosBB(v){
var vr = v.replace("row","");
var conteudoLinha = conteudoBase.rows[vr].cell;
//--
document.getElementById("vrCampos").value = conteudoLinha;
}
$('b.top').click
(
function ()
{
$(this).parent().toggleClass('fh');
}
);
//.text()
</script>
Alguém pode ter uma ideia do porque a paginação não esteja funcionando ?
Obrigado desde já

Compartilhar este post


Link para o post
Compartilhar em outros sites

não tem, o botão next do flexigrid, não muda de página apenas, porém eu nunca mexi com essa ferramenta, então estou meio que fazendo as coisas darem certo na sorte rs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entrei no código fonte da página, e o campo do input está sem name, onde provavelmente deveria estar como : name="page", pois a query pega o valor do input e coloca no LIMIT para fazer a paginação.

Porém ao inserir o name no input pelo código fonte da página, deu mais ou menos certo.

Quando troquei para a página 2, funcionou, porém foi setado na query um LIMIT 2,10, e então não consigo fazer a paginação novamente em seguida, pois ele entende que só há aquilo de registros por causa do limit. Gostaria de saber como posso fazer com que a página continue fazendo a paginação de acordo com o meu LIMIT.

 

 

Query:

 

$page = @$_POST['page'];
$rp = @$_POST['rp'];
$sortname = @$_POST['sortname'];
$sortorder = @$_POST['sortorder'];
if (!$sortname) $sortname = $_SESSION['ordenacao'];
if (!$sortorder) $sortorder = 'asc';
$sort = "ORDER BY $sortname $sortorder";
$start = (($page-1) * $rp);
$limit = "LIMIT $start, $rp";
$stringSQL = "select $exibicao from $tabela $Where $orderBy $limit";
Obs: O flexigrid está dentro de um iframe sem src, e não sei como faço para fazer as alterações, por isso inseri o name no input pelo código fonte.

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.