在详细信息选择器中显示超过 15 行

Show more than 15 rows in a Details Picker

如文档所述here 关于 Lightswitch HTML5 详细信息选择器:

Search string on the auto-complete box require a minimum of 3 characters in order to trigger the search operation and first 15 results show up on the results pane. In case a user wishes to see all the entries within an entity (Customer in our case), they can do so by clicking on the ‘+’ button which will bring up the traditional details modal picker dialog.

有没有办法将 15 个结果限制更改为不同的数量?

虽然 LightSwitch 库中的 15 个结果限制是 hard-coded,但由于 Microsoft 提供了该库的源代码,因此可以轻松对其进行修改。

虽然对 Microsoft 的 LightSwitch 库进行这种类型的修改对于许多更高级的 LightSwitch 开发人员来说并不少见,但如果您决定实施此修改,则需要彻底测试更改是否有任何不利的副作用。此外,如果您升级了 LightSwitch 版本,则需要在新版本中重复库修改。

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

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

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

然后您需要在 Scripts/msls-?.?.?.js 文件中找到并更改 hard-coded 引用,如下所示:

        if (applySearchFilter) {
            search = me.search;
            //itemLimit = 15;
            itemLimit = 30;
        }

或者,如果您想在此增强中引入灵活性元素,则可以改为对 Scripts/msls-?.?.?.js 文件进行以下修改:

        //if (visualCollection._loader._itemLimit !== itemLimit) {
        //    visualCollection._loader._itemLimit = itemLimit;
        //}
        if (!visualCollection._loader._itemLimit) {
            visualCollection._loader._itemLimit = itemLimit;
        }

然后,根据具体情况,您可以在 DetailsPicker 的 postRender 例程中实现以下语句:

myapp.AddEditScreen.DetailsPicker_postRender = function (element, contentItem) {
    // Write code here.
    contentItem.choicesSource._loader._itemLimit = 30;
};