1

我在剑道窗口中有一个剑道剔除网格,网格非常基本,有一个复选框列和 3 个其他文本列。复选框列与网格的记录模型中的可观察属性绑定,例如

$model.isChecked = ko.observable(false);

网格的数据源是给定 javascript 模型的可观察数组。网格具有分页,页面大小为 10 条记录,并且是可滚动的。

我遇到的问题是,由于某种奇怪的原因,当我单击网格底部的复选框时,网格向上滚动到顶部,隐藏了我刚刚检查的记录。

我有其他具有相同逻辑的网格,并且这种行为没有发生,我尝试了不同的事情,似乎每次我更改记录模型的可观察属性时,网格都会做同样的事情。我也尝试订阅网格的滚动事件,但我无法找到与触发滚动或网格自行执行的区别。

我还尝试了以下建议:其他问题,但我得到的行为并不好,因为您看到的就像闪烁一样,网格滚动到顶部,然后滚动到选定的行。

那么,你们中有人遇到过类似的问题吗?

谢谢,

4

2 回答 2

1

试试这个它对我有用

在grid的dataBound和dataBinding事件中

dataBound = function (e) {
    var sender = e.sender;
    sender.content.scrollTop(sender.options.gridTop);
}

dataBinding = function (e) {
    var sender = e.sender;
    sender.options.gridTop = sender.content.scrollTop();
};
于 2015-03-11T15:00:31.550 回答
0

实际上,经过更多调试后,我能够修复它,这是两件事的结合,首先我必须从数据源中删除类型声明:

dataSource: {
    type: 'knockout',
    pageSize: 10,
    page: 1,
    watchable: {
        filter: dataSourceWithFilters
    },
    schema: {
        model: {
            fields: {
                'effectiveFrom()': { type: 'date' },
                'effectiveTo()': { type: 'date' },
                'isChecked()': { type: 'boolean' } // <- this line was removed
            }
        }
    }
}

然后,我在模型中有一些日期,但是我将它们作为计算“侦听”到同一模型中的可观察变量,并且每次该可观察变量有值时,我都会返回日期


$model.link = ko.observable();

$model.effectiveFrom = ko.computed(function () {
    if ($model.link()) {
        return $model.link().effectiveFrom();
    }

    return null;
});

$model.effectiveTo = ko.computed(function () {
    if ($model.link()) {
        return $model.link().effectiveTo();
    }

    return null;
});

每次当任何日期值更改时,这似乎都会使网格重新绑定,因此我为此更改了该代码:


$model.link = ko.observable();

$model.link.subscribe(function (value) {
    if (value) {
        $model.effectiveFrom = ko.observable(value.effectiveFrom()).withDateFormat('MMM-DD-YYYY');
        $model.effectiveTo = ko.observable(value.effectiveTo()).withDateFormat('MMM-DD-YYYY');
    }
});

$model.effectiveFrom = ko.observable().withDateFormat('MMM-DD-YYYY');
$model.effectiveTo = ko.observable().withDateFormat('MMM-DD-YYYY');

随着这些变化,网格停止滚动到顶部。

谢谢您的帮助。

于 2015-03-11T16:53:52.300 回答