带 MS lightswitch 的分拣柱

sorting columns with MS lightswitch

我在使用我的电灯开关应用程序时遇到了一些问题。当我单击 table 中任何列旁边的排序箭头时,它会排序相邻的列,而不是我单击排序箭头的列?有没有其他人遇到过这个?

在今天早些时候调查了一个类似的问题后,我怀疑您在 Microsoft 的 LightSwitch 库中遇到了一个小缺陷。

如果您的 table 包含任何可见性设置为 false 的列并导致列排序被单击列之前的隐藏列数偏移,则会出现此缺陷。

如果是这种情况,您可以通过删除隐藏的列来解决它,或者,由于 Microsoft 提供了 LightSwitch 库的源代码,您可以修改该库以纠正该缺陷。

如果您想实施此更正,您需要通过在 HTML 客户端的 default.htm 文件中进行以下更改来引用 LightSwitch 库的未缩小版本(从库脚本引用的末尾删除 .min):

<!--<script type="text/javascript" src="Scripts/msls-?.?.?.min.js"></script>-->
<script type="text/javascript" src="Scripts/msls-?.?.?.js"></script>

上一行中的问号与您使用的 LightSwitch 版本有关。

然后您需要在 Scripts/msls-?.?.?.js 文件中找到 sortTableByColumn 函数并对其代码进行以下修改:

    //var header = columnContentItems[cellIndex];
    var header = columnContentItems.filter(function (item) {
        return item.isVisible;
    })[cellIndex];

通过对 columnContentItems 数组应用过滤器,此更改可确保在访问由 cellIndex 参数标识的必需元素时仅考虑可见列。