jQuery Asp.Net datagrid 表头固定 表内容滚动代码实现

该博客介绍了如何使用jQuery在Asp.Net环境下实现Datagrid的表头固定,当内容区域滚动时,表头始终保持可见。通过在原始表格前插入一个新的包含固定表头的表格,并利用col标记固定列宽,调整样式和高度实现滚动效果。此方法适用于处理含有大量数据的表格,保持用户友好界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//整体思路还是老样子:在前面插入一个新table,里面只有表头,然后设置数据表格的高度使其滚动即可。
//由于table的表头的宽度会根据内容或者下面行的内容改变,所以我们需要用的col标记来固定他的宽度,格式如:<col width='200px'></col>
//方法调用:直接传进去表格的id和想要滚动的高度就可以了
jQuery.fn.outerHTML = function (s) {
    return s
            ? this.before(s).remove()
            : jQuery("<p>").append(this.eq(0).clone()).html();
};//这个是获取元素的全部html,下面复制表头的时候要用到,因为复制表头的时候需要把样式也复制过去(如果里面没任何样式就免了。。)



function fixHeader(tableID,height) {
    var table = $("#" + tableID);
    var headers = table.find("th").length > 0
                ? table.find("th")
                : table.find("tr:first");


    var colHTML = "";


    //最后一个col不用管,让它自己去适应
    for (var i = 0; i < headers.find("td").length - 1; i++) {
        colHTML += "<col width = '" + headers.find("td:eq(" + i + ")").width() + "'></col>";
    }


    //插入表头
    table.before("<table class='thead'>" + colHTML + "<tbody>" + headers.outerHTML() + "</tbody></table>");


    //重置表头的宽度
    $(".thead").width(table.width());


    //原表中插入col标记
    table.find("tbody").before(colHTML);   


    table.css("display", "block").height(height).css("overflowY", "scroll");
    
    if ($.browser.msie) {
        //IE下表格不能通过设置表格高度来实现滚动
        table.wrap("<div class='tablewrap'></div>");        
        //$(".tablewrap").width(table.width();
        $(".tablewrap").height(height).css("overflowY", "auto").css("overflowX", "hidden");       
    }


    //删除第一行
    headers.height(0).find("td").html("").height(0);
}

//自己写的方法,,菜鸟作品,如果有Bug,还望指正。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值