<?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: Multi-Column Sorting, (Ordering)</title>
	<link>http://www.trirand.com/blog/?page_id=393/discussion/multi-column-sorting-ordering</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/discussion/multi-column-sorting-ordering/rss" rel="self" type="application/rss+xml" />
        <item>
        	<title>jstagger on Multi-Column Sorting, (Ordering)</title>
        	<link>http://www.trirand.com/blog/?page_id=393/discussion/multi-column-sorting-ordering#p29188</link>
        	<category>Discussion</category>
        	<guid isPermaLink="true">http://www.trirand.com/blog/?page_id=393/discussion/multi-column-sorting-ordering#p29188</guid>
        	        	<description><![CDATA[<p>It was finally released in jqgrid 4.5.0.</p>
</p>
<p>There is a demo together with code here - <a href="http://goo.gl/IMRyV" rel="nofollow" target="_blank">http://goo.gl/IMRyV</a></p>
]]></description>
        	        	<pubDate>Thu, 18 Jul 2013 02:23:31 +0300</pubDate>
        </item>
        <item>
        	<title>ooo on Multi-Column Sorting, (Ordering)</title>
        	<link>http://www.trirand.com/blog/?page_id=393/discussion/multi-column-sorting-ordering#p28627</link>
        	<category>Discussion</category>
        	<guid isPermaLink="true">http://www.trirand.com/blog/?page_id=393/discussion/multi-column-sorting-ordering#p28627</guid>
        	        	<description><![CDATA[<p>Tony,<br />Was this ever released into the regular product?&#160; I don&#39;t see it anywhere.</p>
]]></description>
        	        	<pubDate>Tue, 09 Apr 2013 19:01:07 +0300</pubDate>
        </item>
        <item>
        	<title>chrismark on Multi-Column Sorting, (Ordering)</title>
        	<link>http://www.trirand.com/blog/?page_id=393/discussion/multi-column-sorting-ordering#p26750</link>
        	<category>Discussion</category>
        	<guid isPermaLink="true">http://www.trirand.com/blog/?page_id=393/discussion/multi-column-sorting-ordering#p26750</guid>
        	        	<description><![CDATA[<p>is there a way to do this locally (datatype: &#39;local&#39;)?</p>
]]></description>
        	        	<pubDate>Fri, 08 Jun 2012 04:03:27 +0300</pubDate>
        </item>
        <item>
        	<title>tony on Multi-Column Sorting, (Ordering)</title>
        	<link>http://www.trirand.com/blog/?page_id=393/discussion/multi-column-sorting-ordering#p26174</link>
        	<category>Discussion</category>
        	<guid isPermaLink="true">http://www.trirand.com/blog/?page_id=393/discussion/multi-column-sorting-ordering#p26174</guid>
        	        	<description><![CDATA[<p>Hello,</p>
<p>If everthing is ok this will be a grid option.</p>
<p>Regsrds</p>
]]></description>
        	        	<pubDate>Mon, 19 Mar 2012 16:09:34 +0200</pubDate>
        </item>
        <item>
        	<title>Rat on Multi-Column Sorting, (Ordering)</title>
        	<link>http://www.trirand.com/blog/?page_id=393/discussion/multi-column-sorting-ordering#p26171</link>
        	<category>Discussion</category>
        	<guid isPermaLink="true">http://www.trirand.com/blog/?page_id=393/discussion/multi-column-sorting-ordering#p26171</guid>
        	        	<description><![CDATA[<p>Tony,</p>
<p>My approach was to toggle multi-sorting mode off and on via a check box in the pager bar... this implementation may not suit everybody.</p>
<p>Also there was no attempt to include a visual indicator in the column headers, (perhaps a sort index number or color-coded sort glyph etc).</p>
<p>Cheers,</p>
<p>Keith.</p>
<p>(A.K.A Rat)</p></p>
]]></description>
        	        	<pubDate>Mon, 19 Mar 2012 13:51:49 +0200</pubDate>
        </item>
        <item>
        	<title>tony on Multi-Column Sorting, (Ordering)</title>
        	<link>http://www.trirand.com/blog/?page_id=393/discussion/multi-column-sorting-ordering#p26169</link>
        	<category>Discussion</category>
        	<guid isPermaLink="true">http://www.trirand.com/blog/?page_id=393/discussion/multi-column-sorting-ordering#p26169</guid>
        	        	<description><![CDATA[<p>Hello,</p>
<p>Thanks a lot for the contribution.</p>
<p>This week I will look into the code and if it is OK and work fine I will include it into the source.</p>
</p>
<p>Best Regards</p>
<p>Tony</p>
]]></description>
        	        	<pubDate>Mon, 19 Mar 2012 13:39:33 +0200</pubDate>
        </item>
        <item>
        	<title>Rat on Multi-Column Sorting, (Ordering)</title>
        	<link>http://www.trirand.com/blog/?page_id=393/discussion/multi-column-sorting-ordering#p26150</link>
        	<category>Discussion</category>
        	<guid isPermaLink="true">http://www.trirand.com/blog/?page_id=393/discussion/multi-column-sorting-ordering#p26150</guid>
        	        	<description><![CDATA[<p>I&#39;ve implemented my own multi-column sorting and decided to share the code below&#8230; enjoy.</p>
<p>p.s. I&#39;ve also provided my code for column header separator double-click width autosizing in a <a href="/blog/?page_id=393/feature-request/double-click-column-separator/" target="_blank">separate post here</a>.</p>
<p>(In both instances the code works, but could definitely be cleaned up)&#160;</p>
</p>
<p><input type='button' class='sfcodeselect' name='sfselectit8517' value='Select Code' data-codeid='sfcode8517' /></p>
<div class='sfcode' id='sfcode8517'>
<p>// Somewhat messy code to implement the Multi-Sort&#8230; I&#39;m sure this could be done using some kind of index and not resorting to Regular Expressions to manipulate strings</p>
<p>function multiSort(index, iCol, sortorder)</p>
<p>{</p>
<p>&#160;if (jQuery(&#39;#multisortcheckbox&#39;).is(&#39;:checked&#39;))</p>
<p>&#160;{</p>
<p>&#160; var Column = jQuery(&#39;#grid&#39;)[0].p.colModel;</p>
</p>
<p>&#160; jQuery(&#34;#grid&#34;).setGridParam({sortname: colModel[0][&#39;index&#39;], sortorder: &#39;asc&#39;});</p>
</p>
<p>&#160; if (multiSort.sortName == &#39;&#39;)</p>
<p>&#160; {</p>
<p>&#160; &#160;multiSort.sortName = Column[iCol].index;</p>
<p>&#160; &#160;multiSort.sortOrder = sortorder;</p>
<p>&#160; }</p>
<p>&#160; else</p>
<p>&#160; {</p>
<p>&#160; &#160;var RegEx = new RegExp(&#39;s*&#39; + Column[iCol].index + &#39;s*&#39;, &#39;i&#39;);</p>
<p>&#160; &#160;if (RegEx.test(multiSort.sortName))  // Test if column already selected in Multi-Sort collection</p>
<p>&#160; &#160;{</p>
<p>&#160; &#160; RegEx = new RegExp(&#39;s*&#39; + Column[iCol].index + &#39; ([ade]+sc)s*&#39;, &#39;i&#39;);</p>
<p>&#160; &#160; if (RegEx.test(multiSort.sortName))  // Test if NOT last field in sort list</p>
<p>&#160; &#160; {</p>
<p>&#160; &#160; &#160;var colSortOrder = RegEx.exec(multiSort.sortName);</p>
<p>&#160; &#160; &#160;colSortOrder = ((colSortOrder &#38;&#38; colSortOrder[1] == &#39;asc&#39;) ? &#39;desc&#39; : &#39;asc&#39;);  // Toggle Column Sort Order since this is not retained when moving from one column to the next in Multi-Sort mode</p>
<p>&#160; &#160; &#160;RegEx = new RegExp(&#39;(s*&#39; + Column[iCol].index + &#39;) [ade]+scs*&#39;, &#39;i&#39;);</p>
<p>&#160; &#160; &#160;multiSort.sortName = multiSort.sortName.replace(RegEx, &#39;$1 &#39; + colSortOrder);</p>
<p>&#160; &#160; }</p>
<p>&#160; &#160; else multiSort.sortOrder = ((multiSort.sortOrder == &#39;asc&#39;) ? &#39;desc&#39; : &#39;asc&#39;);  // If last field in sort list then change sort order (Toggle Column Sort Order since this is not retained when moving from one column to the next in Multi-Sort mode)</p>
<p>&#160; &#160;}</p>
<p>&#160; &#160;else</p>
<p>&#160; &#160;{</p>
<p>&#160; &#160; multiSort.sortName = multiSort.sortName + &#39; &#39; + multiSort.sortOrder + &#39;, &#39; + Column[iCol].index;</p>
<p>&#160; &#160; multiSort.sortOrder = sortorder;</p>
<p>&#160; &#160;}</p>
<p>&#160; }</p>
</p>
<p>&#160; jQuery(&#34;#grid&#34;).setGridParam({sortname: multiSort.sortName, sortorder: multiSort.sortOrder});</p>
<p>&#160;}</p>
<p>}</p>
<p>multiSort.sortName = &#39;&#39;;</p>
<p>multiSort.sortOrder = &#39;&#39;;</p>
</div>
<p><input type='button' class='sfcodeselect' name='sfselectit5684' value='Select Code' data-codeid='sfcode5684' /></p>
<div class='sfcode' id='sfcode5684'>
<p>// Toggle multi-sort mode</p>
<p>jQuery(&#34;#multisortcheckbox&#34;).change(function()</p>
<p>{</p>
<p>&#160;var Column = jQuery(&#39;#grid&#39;)[0].p.colModel;</p>
</p>
<p>&#160;if (!jQuery(&#39;#multisortcheckbox&#39;).is(&#39;:checked&#39;))</p>
<p>&#160;{</p>
<p>&#160; jQuery(&#34;#grid&#34;).setGridParam({sortname: colModel[0][&#39;index&#39;], sortorder: &#39;asc&#39;});</p>
<p>&#160; multiSort.sortName = &#39;&#39;;</p>
<p>&#160; multiSort.sortOrder = &#39;&#39;;</p>
<p>&#160;}</p>
<p>});</p>
</div>
<p><input type='button' class='sfcodeselect' name='sfselectit2252' value='Select Code' data-codeid='sfcode2252' /></p>
<div class='sfcode' id='sfcode2252'>
<p>// Add a Multi-Sort checkbox after the Grid Refresh button in the Pager bar</p>
<p>jQuery(&#39;td#refresh_grid&#39;).after(&#39;&#60;td id=&#34;multisortcell&#34;&#62;&#60;span id=&#34;multisort&#34; title=&#34;Toggle Column Multi-Sorting&#34;&#62;&#60;label for=&#34;multisortcheckbox&#34; style=&#34;padding: 0 3px 0 10px; cursor: pointer;&#34;&#62;Multi-Sort&#60;/label&#62;&#60;input id=&#34;multisortcheckbox&#34; type=&#34;checkbox&#34; class=&#34;ui-pg-input&#34; style=&#34;vertical-align: middle; cursor: pointer;&#34;/&#62;&#60;/span&#62;&#60;/td&#62;&#39;);  // Add the &#34;Multi-Sort&#34; checkbox to the footer bar</p>
</div>
<p><input type='button' class='sfcodeselect' name='sfselectit2994' value='Select Code' data-codeid='sfcode2994' /></p>
<div class='sfcode' id='sfcode2994'>
<p>// Construct the jqGrid component</p>
<p>jQuery(&#34;#grid&#34;).jqGrid</p>
<p>({</p>
<p>&#160; &#8230;</p>
<p>&#160; onSortCol: function(index, iCol, sortorder){multiSort(index, iCol, sortorder);},  // jqGrid onSortCol event handler</p>
<p>&#160; &#8230;</p>
<p>});</p>
</div>
<p><input type='button' class='sfcodeselect' name='sfselectit5290' value='Select Code' data-codeid='sfcode5290' /></p>
<div class='sfcode' id='sfcode5290'>
<p>// Create the SQL sort statement in the PHP web service</p>
</p>
<p>$SortIndex = isset($_GET[&#39;sidx&#39;])?$_GET[&#39;sidx&#39;]:(isset($_POST[&#39;sidx&#39;])?$_POST[&#39;sidx&#39;]:&#39;&#39;);</p>
<p>$SortOrder = isset($_GET[&#39;sord&#39;])?$_GET[&#39;sord&#39;]:(isset($_POST[&#39;sord&#39;])?$_POST[&#39;sord&#39;]:1);</p>
</p>
<p>$Order = &#39;&#39;;</p>
<p>$Comma = &#39;&#39;;</p>
<p>$SortIndices = explode(&#39;,&#39;, $SortIndex);</p>
<p>foreach ($SortIndices as $SortValue)</p>
<p>{</p>
<p>&#160;$SortValues = explode(&#39; &#39;, trim($SortValue));</p>
<p>&#160;foreach ($SortValues as $SortField)</p>
<p>&#160;{</p>
<p>&#160; if ($SortField == &#39;desc&#39; &#124;&#124; $SortField == &#39;asc&#39;) $Order .= &#39; &#39; . $SortField;</p>
<p>&#160; else $Order .= $Comma . &#39;[&#39; . $SortField . &#39;]&#39;;</p>
<p>&#160;}</p>
<p>&#160;$Comma = &#39;, &#39;;</p>
<p>}</p>
<p>$Order .= &#39; &#39; . $SortOrder;  // $Order contains the full SQL sort string</p>
</div>
]]></description>
        	        	<pubDate>Thu, 15 Mar 2012 02:28:41 +0200</pubDate>
        </item>
</channel>
</rss>