Forum

November 2nd, 2014
A A A
Avatar

Lost password?
Advanced Search

— Forum Scope —




— Match —





— Forum Options —





Minimum search word length is 3 characters - maximum search word length is 84 characters

The forums are currently locked and only available for read only access
sp_Feed Topic RSS sp_Related Related Topics sp_TopicIcon
help please jqgrid freeze columns
09/08/2011
22:02
Avatar
alohaaaron
Member
Members
Forum Posts: 11
Member Since:
13/10/2010
sp_UserOfflineSmall Offline

I'd like to use the existing jqgrid freeze extension from Tim Heckel to freeze selected columns on a jqgrid but am unclear on how to add it to the jqgrid columns?  The link on his demo does not work except for the link to the video.   /blog/?page_id=393/discussion/new-freeze-column-plugin/ Has anyone implemented this and has a working demo to share? I assume this code works properly? Thanks. 

(function (jQuery) { /**    * jqGrid extension    * Tim Heckel mailto:timheckel@gmail.com; * http://www.gnu.org/licenses/gp.....  **/
jQuery.extend(jQuery.jgrid, {
    //overrides existing       
    getCellIndex: function (cell) {           
    var c = jQuery(cell);           
    if (c.is('tr')) { return -1; }
    var index = -1;
    if (c.parent().hasClass("ui-jqgrid-frozenColumnHeader")) {
        index = parseInt(c.attr("rel"));
    } else {
        c = (!c.is('td') && !c.is('th') ? c.closest("td,th") : c)[0];
        if (jQuery.browser.msie) {
            index = jQuery.inArray(c, c.parentNode.cells);
        } else {
            index = c.cellIndex;
        }
    }
    return index;
}
}); jQuery.jgrid.extend({
removeFreezeIcons: function () {
    jQuery(".toggleFrozenColumn").remove();
},
freezingSetup: function () {
    return this.each(function () {
        var grid = this;
        var colIndex = -1;
        jQuery(".ui-th-column").each(function () {
            colIndex++;
            if (colIndex <= grid.p.colModel.length - 1) {
                if (jQuery(this).is(":visible") && grid.p.colModel[colIndex].freezing) {
                    if (jQuery(".toggleFrozenColumn[rel=" + colIndex + "]").length === 0) {
                        jQuery(this).children(".ui-jqgrid-sortable").prepend("<img href='javascript:' class='toggleFrozenColumn' rel='" + colIndex + "' src='" + grid.p.imageDir + "/pinup.png'/>");
                    }
                }
            } else {
                return;
            }
        });

        jQuery(".toggleFrozenColumn").unbind();
        jQuery(".toggleFrozenColumn").click(function (e) {
            e.stopPropagation();
            var img = this;
            jQuery.extend(grid.p, {
                currentFrozenIndex: parseInt(jQuery(this).attr("rel"))
            });
            process(img);
        });

        function process(img) {
            jQuery(".toggleFrozenColumn").hide();
            jQuery(img).show();
            var _ci = parseInt(jQuery(img).attr("rel"));
            var _name = grid.p.colModel[parseInt(jQuery(img).attr("rel"))].name;
            if (jQuery(img).attr("src").indexOf("pindown") > -1) {
                jQuery("#" + grid.p.id + "_" + _name).find('.toggleFrozenColumn').attr("src", grid.p.imageDir + "/pinup.png");
                for (ci = parseInt(jQuery(img).attr("rel")); ci > -1; ci--) {
                    jQuery("#" + grid.p.id).jqGrid("unfreezeColumn", ci);
                }
                jQuery(".toggleFrozenColumn").show();
            } else {
                jQuery(img).attr("src", grid.p.imageDir + "/pindown.png");
                for (ci = parseInt(jQuery(img).attr("rel")); ci > -1; ci--) {
                    jQuery("#" + grid.p.id).jqGrid("freezeColumn", ci);
                }
            }
        }
        if (grid.p.currentFrozenIndex !== undefined) {
            var img = jQuery(".toggleFrozenColumn[rel=" + grid.p.currentFrozenIndex + "]");

            //unfreeze all                   
            process(img[img.length - 1]);
            //freeze all                   
            process(img[0]);                }            });        },        unfreezeColumn: function (colIndex) {            return this.each(function () {                var t = this;                var _name = t.p.colModel[colIndex].name;                if (jQuery("#frozenColumn_" + _name).length > 0) {                    jQuery("#frozenColumnHeader_" + _name).remove();                    jQuery("#frozenColumn_" + _name).remove();                }            });        },        freezeColumn: function (colIndex) {            jQuery(".ui-jqgrid-bdiv").scroll(function () {                jQuery(".ui-jqgrid-frozenColumn").scrollTop(jQuery(this).scrollTop());            });            return this.each(function () {                var t = this;                var _name = t.p.colModel[colIndex].name;                var _allow = t.p.colModel[colIndex].freezing;                if (jQuery("#frozenColumn_" + _name).length === 0 && _allow) {                    var _id = t.p.id;                    var c = jQuery("#" + _id + "_" + _name);                    if (c.is(":visible")) {                        var th = c.clone(true).css("height", c.height() + "px").css("vertical-align", "middle"); //.css("background-color", t.p.frozenColumnHorizontalBorderColor); //.css("font-weight", c.css("font-weight"));
            var ct = "";

            var cell = jQuery('td[aria-describedby=' + _id + '_' + _name + ']');
            var dimen = {
                height: 0,
                top: 0,
                width: 0,
                top: 0,
                left: 0
            };
            dimen.height = jQuery(".ui-jqgrid-bdiv").outerHeight(true) - 16;
            jQuery.each(cell, function () {
                var cls = new Array();
                var classList = $(this).attr('class').split(/s+/);
                jQuery.each(classList, function (index, item) {
                    cls.push(item);
                });
                ct += "<div class='ui-jqgrid-frozenColumnCell " + cls.join(' ') + "' style='border-right:1px solid " + t.p.frozenColumnVerticalBorderColor + ";border-left:1px solid transparent;border-bottom:1px solid " + t.p.frozenColumnHorizontalBorderColor + ";background-color:#FFF;padding-top:1px;height:" + (jQuery(this).height() - 1) + "px;'>" + jQuery(this).html() + "</div>";
                if (dimen.width === 0) dimen.width = jQuery(this).width() + 1;
                if (dimen.top === 0) {
                    dimen.top = jQuery(".ui-jqgrid-titlebar").outerHeight(true) + c.outerHeight(true) + 1;
                    dimen.left = jQuery(this).position().left - 1;
                }
            });

            var titleBarHeight = jQuery(".ui-jqgrid-titlebar").outerHeight(true);

            jQuery(".ui-jqgrid-view").append("<div class='ui-jqgrid-frozenColumnHeader' id='frozenColumnHeader_" + _name + "' style='height:" + c.height() + "px;width:" + c.width() + "px;top:" + titleBarHeight + "px;left:" + dimen.left + "px;position:absolute;overflow:hidden;border-right:1px solid " + t.p.frozenColumnVerticalBorderColor + "'></div>");
            jQuery(".ui-jqgrid-view").append("<div class='ui-jqgrid-frozenColumn' id='frozenColumn_" + _name + "' style=';overflow:hidden;position:absolute;height:" + dimen.height + "px;width:" + dimen.width + "px;top:" + dimen.top + "px;left:" + dimen.left + "px;'>" + ct + "</div>");

            c = (!c.is('td') && !c.is('th') ? c.closest("td,th") : c)[0];

            if (jQuery.browser.msie) {
                th.attr("rel", jQuery.inArray(jQuery("#" + _id + "_" + _name), c.parentNode.cells));
            } else {
                th.attr("rel", c.cellIndex);
            }
            jQuery("#frozenColumnHeader_" + _name).append(th);
        }
    }
    });
}
});
})(jQuery);

Forum Timezone: Europe/Sofia

Most Users Ever Online: 715

Currently Online:
32 Guest(s)

Currently Browsing this Page:
1 Guest(s)

Top Posters:

OlegK: 1255

markw65: 179

kobruleht: 144

phicarre: 132

YamilBracho: 124

Renso: 118

Member Stats:

Guest Posters: 447

Members: 11373

Moderators: 2

Admins: 1

Forum Stats:

Groups: 1

Forums: 8

Topics: 10592

Posts: 31289

Newest Members:

, razia, Prankie, psky, praveen neelam, greg.valainis@pa-tech.com

Moderators: tony: 7721, Rumen[Trirand]: 81

Administrators: admin: 66

Comments are closed.
Privacy Policy   Terms and Conditions   Contact Information