<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
	<title>jQuery Grid Plugin - jqGrid - Topic: Bug in addJSONData ts.p.lastpage value wrong assigned</title>
	<link>http://www.trirand.com/blog/?page_id=393/bugs/bug-in-addjsondata-tsplastpage-value-wrong-assigned</link>
	<description><![CDATA[Grid plugin]]></description>
	<generator>Simple:Press Version 5.7.5.3</generator>
	<atom:link href="http://www.trirand.com/blog/?page_id=393/bugs/bug-in-addjsondata-tsplastpage-value-wrong-assigned/rss" rel="self" type="application/rss+xml" />
        <item>
        	<title>tony on Bug in addJSONData ts.p.lastpage value wrong assigned</title>
        	<link>http://www.trirand.com/blog/?page_id=393/bugs/bug-in-addjsondata-tsplastpage-value-wrong-assigned#p13917</link>
        	<category>Bugs</category>
        	<guid isPermaLink="true">http://www.trirand.com/blog/?page_id=393/bugs/bug-in-addjsondata-tsplastpage-value-wrong-assigned#p13917</guid>
        	        	<description><![CDATA[<p>Klaus,</p>
<p>Thank you very much. I will do the needed.</p>
<p>Best Regards</p>
<p>Tony</p>
]]></description>
        	        	<pubDate>Thu, 14 Jan 2010 22:17:29 +0200</pubDate>
        </item>
        <item>
        	<title>Klaus on Bug in addJSONData ts.p.lastpage value wrong assigned</title>
        	<link>http://www.trirand.com/blog/?page_id=393/bugs/bug-in-addjsondata-tsplastpage-value-wrong-assigned#p13889</link>
        	<category>Bugs</category>
        	<guid isPermaLink="true">http://www.trirand.com/blog/?page_id=393/bugs/bug-in-addjsondata-tsplastpage-value-wrong-assigned#p13889</guid>
        	        	<description><![CDATA[<div class="logRow logRow-log">Hello!</div>
<div class="logRow logRow-log"></div>
<div class="logRow logRow-log">I&#39;ve found a bug occuring in the following situation ...</div>
<div class="logRow logRow-log" style="padding-left: 30px;">I&#39;m using a grid with "true scrolling" (scroll: 1) activated.</div>
<div class="logRow logRow-log" style="padding-left: 30px;">In normal cases this does work correctly but if the server returns an empty table without any rows, the grid hangs in an endless loop of reloading the grid data.</div>
<div class="logRow logRow-log" style="padding-left: 30px;">The JSON data returned from the server for the grid is: {"page":1,"records":0,"rows":[],"total":0}</div>
<div class="logRow logRow-log"></div>
<div class="logRow logRow-log">The problem seems that the grid variable "ts.p.lastpage" is set to 1 instead of 0 ("total":0).</div>
<div class="logRow logRow-log">I don&#39;t know why the grid then tries to load the data in an endless loop, maybe because of "true scrolling".</div>
<div class="logRow logRow-log"></div>
<div class="logRow logRow-log">I didn&#39;t find a real problem in the grid code (v. 3.6.2), but have fixed the problem the following way (todo: cleanup fix):</div>
<div class="logRow logRow-log" style="padding-left: 30px;">addJSONData = function(data,t, rcnt, more, adjust) {<br />&#160; ...&#160; &#160;&#160;&#160; &#160;&#160; <br />&#160; ts.p.lastpage= data[ts.p.jsonReader.total] &#124;&#124; 1;<br />&#160; log(["XXX: in addJSONData set lastpage=" + ts.p.lastpage, data, ts.p.jsonReader, ts.p.jsonReader.total, isDefined(ts.p.jsonReader.total), data[ts.p.jsonReader.total]]);<br />&#160; if (typeof data[ts.p.jsonReader.total] == "undefined") {<br />&#160;&#160;&#160; ts.p.lastpage = 1;<br />&#160; } else {<br />&#160;&#160;&#160; ts.p.lastpage = data[ts.p.jsonReader.total]; <br />&#160; }<br />&#160; log("XXX: lastpage=" + ts.p.lastpage);</div>
<div class="logRow logRow-log" style="padding-left: 30px;">...</div>
<div class="logRow logRow-log" style="padding-left: 30px;">}</div>
<div class="logRow logRow-log"></div>
<div class="logRow logRow-log">The log output of the modified code is the following:</div>
<div class="logRow logRow-log">
<div class="logRow logRow-log" style="padding-left: 30px;"><span class="objectBox objectBox-array "><span class="arrayLeftBracket ">[</span><span class="objectBox objectBox-string ">"XXX: in addJSONData set lastpage=1"</span><span class="arrayComma ">, </span><a class="objectLink objectLink-object a11yFocus " target="_blank">{ page=<span class="objectPropValue ">1</span> records=<span class="objectPropValue ">0</span> rows=<span class="objectPropValue ">[0]</span> total=<span class="objectPropValue ">0</span> userdata=<span class="objectPropValue ">Object</span> }</a><span class="arrayComma ">, </span><a class="objectLink objectLink-object a11yFocus " target="_blank">{ root=<span class="objectPropValue ">rows</span> page=<span class="objectPropValue ">page</span> total=<span class="objectPropValue ">total</span> records=<span class="objectPropValue ">records</span> }</a><span class="arrayComma ">, </span><span class="objectBox objectBox-string ">"total"</span><span class="arrayComma ">, </span><span class="objectBox objectBox-number ">true</span><span class="arrayComma ">, </span><span class="objectBox objectBox-number ">0</span><span class="arrayRightBracket ">]</span></span></div>
<div class="logRow logRow-log" style="padding-left: 30px;"><span class="objectBox objectBox-text ">XXX: lastpage=0</span></div>
<div class="logRow logRow-log"></div>
<div class="logRow logRow-log">The assignment check or the short-circut-evaluation in "ts.p.lastpage= data[ts.p.jsonReader.total] &#124;&#124; 1;" does not work!</div>
<div class="logRow logRow-log">"data[ts.p.jsonReader.total]" is defined and has the value 0 but the assigned result is 1.</div>
<div class="logRow logRow-log"></div>
<div class="logRow logRow-log">for details see:</div>
<div class="logRow logRow-log"><a href="https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Operators/Logical_Operators" rel="nofollow" target="_blank">https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Operators/Logical_Operators</a></div>
<div class="logRow logRow-log"></div>
<div class="logRow logRow-log">
<table class="fullwidth-table" border="0">
<tbody>
<tr>
<td>Logical OR (<code>&#124;&#124;</code>)</td>
<td><code><em>expr1</em> &#124;&#124; <em>expr2</em></code></td>
<td>Returns <code>expr1</code> if it can be converted to true; otherwise, returns <code>expr2</code>. Thus, when used with Boolean values, <code>&#124;&#124;</code> returns true if either operand is true; if both are false, returns false.</td>
</tr>
</tbody>
</table>
</div>
<div class="logRow logRow-log">... a short-circut-evalution with value "0" is dangerous because "0" evaluates to "false", please check your code for similar problems.</div>
<div class="logRow logRow-log"></div>
<div class="logRow logRow-log">Kind regards,</div>
<div class="logRow logRow-log">Klaus.</div>
</div>
]]></description>
        	        	<pubDate>Thu, 14 Jan 2010 12:17:08 +0200</pubDate>
        </item>
</channel>
</rss>