请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

何生 活字格认证

中级会员

40

主题

211

帖子

721

积分

中级会员

积分
721

活字格认证微信认证勋章

QQ
何生 活字格认证
中级会员   /  发表于:2017-4-24 16:02  /   查看:3570  /  回复:6
活字格在发布的页面中,可以用函数或是代码来显示相同的内容的单元格自动合并吗?  求指点!!谢谢!!

6 个回复

倒序浏览
Simon.hu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2017-4-24 18:12:03
沙发
这个附件就是的,但是这个性能不太好。还是建议你用系统自带的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
何生活字格认证
中级会员   /  发表于:2017-4-25 08:59:37
板凳
谢谢啊!列合并要怎么改?
var columnNames = ["ProductId", "name", "age", "area", "city", "tel", "address"];
var listivewName = "表格1";

function getSheet() {
    return $("#" + listivewName).children().wijspread("spread").getActiveSheet();
}

function getListview() {
    return Forguncy.Page.getListView(listivewName);
}

mergeSheetWithSameValue();

var listview = getListview();
var sheet = getSheet();

listview.bind("reloaded", null, function (e) {
    mergeSheetWithSameValue();
});

var rowCount = listview.getRowCount();
sheet.bind(GcSpread.Sheets.Events.TopRowChanged, function (sender, args) {
    Forguncy.DelayRefresh.Push(this, function () {
        var newRowCount = getListview().getRowCount();
        if (rowCount != newRowCount) {
            mergeSheetWithSameValue();
            rowCount = newRowCount;
        }
    }, "merge");
    //var newRowCount = getListview().getRowCount();
    //if (rowCount != newRowCount) {
    //    mergeSheetWithSameValue();
    //    rowCount = newRowCount;
    //}
});


function mergeSheetWithSameValue() {
    var sheet = getSheet();
    sheet.isPaintSuspended(true);

    clearSpan(sheet);

    var rowCount = getListview().getRowCount();
    var colCount = columnNames.length;

    for (var c = 0; c < colCount; c++) {
        for (var r = 0; r < rowCount;) {
            var preColSpan = 1;
            if (c === 0) {
                preColSpan = rowCount;
            } else {
                var span = sheet.getSpan(r, c - 1);
                if (span) {
                    preColSpan = span.rowCount;
                }
            }
            setSpan(sheet, r, c, preColSpan);
            r += preColSpan;
        }
    }

    sheet.isPaintSuspended(false);
}

function clearSpan(sheet) {
    var spans = sheet.getSpans();
    if (!spans) {
        return;
    }
    for (var i = 0; i < spans.length; i++) {
        sheet.removeSpan(spans[i].row, spans[i].col);
    }
}

function setSpan(sheet, row, col, rowCount) {
    for (var r = row; r < row + rowCount;) {
        var startRow = r;
        var value = getSheetValue(startRow, col);

        for (var k = r + 1; ; k++) {
            if (k === row + rowCount || value !== getSheetValue(k, col)) {
                var span = k - startRow;
                if (span > 1) {
                    sheet.addSpan(startRow, col, span, 1);
                }
                r = k;
                break;
            }
        }
    }
}

function getSheetValue(row, col) {
    return getListview().getValue(row, columnNames[col]);
}
回复 使用道具 举报
Simon.hu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2017-4-25 09:48:14
地板
何生 发表于 2017-4-25 08:59
谢谢啊!列合并要怎么改?
var columnNames = ["ProductId", "name", "age", "area", "city", "tel", "add ...

一共需要修改的只有下面红字的地方,
var columnNames = ["ProductId", "name", "age", "area", "city", "tel", "address"];
var listivewName = "表格1";
他们分别是这样修改的:
"表格1"指的是 当前表的名字,如图所示:

["ProductId", "name", "age", "area", "city", "tel", "address"] 指的是表格里面每一列的名字,如下图所示:

给每一列的名字都和代码中的名字设置成一样的,运行以后在网页里面,就会有效果了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
何生活字格认证
中级会员   /  发表于:2017-4-25 11:02:17
5#
非常感谢!
回复 使用道具 举报
钮钴禄小懒子悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2019-9-10 13:47:27
6#
Simon.hu 发表于 2017-4-24 18:12
这个附件就是的,但是这个性能不太好。还是建议你用系统自带的

您好,我下载了这个附件,然后运行了一下,发现都没有合并呀,而且我把代码拿过去只合并一列是不可以的吗?
回复 使用道具 举报
Tracy.Liu讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2019-9-10 14:14:04
7#
钮钴禄小懒子 发表于 2019-9-10 13:47
您好,我下载了这个附件,然后运行了一下,发现都没有合并呀,而且我把代码拿过去只合并一列是不可以的吗?

您可以直接使用活字格提供的自动合并功能,自动合并:https://help.grapecity.com.cn/pa ... ion?pageId=30246737

由于这个帖子已经很久啦,如果后续有问题,可以重新开一个帖子进行提问哦~感谢您的支持呢~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部