Lightswitch搜索屏幕 - 选择您可以搜索的内容

时间:2015-03-02 06:58:54

标签: search visual-studio-lightswitch

我有一个搜索屏幕,显示来自'项目'实体。其中一个字段是指向“客户”的链接。实体,具有客户端名称。

我可以使用数据上方的搜索框按项目名称,日期等进行搜索,但我无法按客户名称搜索。我猜是因为它实际上是对单独实体的引用。

我怎样才能使用搜索框按客户名搜索项目?

这里试图解释清楚的是数据库布局。

Project
------
ProjName
ProjType
ProjComment
Client --------------- Client
                       -----
                       Name
                       Address

我可以按项目字段搜索,但不能搜索客户端名称。

2 个答案:

答案 0 :(得分:1)

为Project实体创建自定义查询,并为要搜索的所有Project和Client属性添加可选参数。连接自定义查询过滤器。 对于完全控制,不要连接自定义查询过滤器,而是在后面的代码中过滤PreProcess事件。

答案 1 :(得分:1)

如果您使用 HTML 客户端,则可以在与浏览 屏幕相关联的浏览 屏幕上执行以下操作你的情况是项目表。如果您查看左侧导航栏,请单击编辑 查询,在此处,您可以看到3个选项,过滤器排序参数

过滤器应根据您的表结构说出Client.Name,第二个应更改为"包含",第3个应设置为参数,最后第4个框是在哪里创建新参数,您将用作搜索框......

您可以重命名底部的参数,我总是在此处找到最佳效果,将其设置为右下角属性框中的可选项。 (这意味着在搜索之前将显示所有数据而不是任何内容)

现在,如果您要返回主屏幕页面,请将此参数从左侧拖动到主屏幕页面并将其设置为文本框。使用此键并在键入内容后按Enter键将显示与您目前键入的内容相匹配的结果。

如果您点击" 编辑PostRender代码"并在输入3个字符后添加以下内容,您的搜索表格列表将在每次手指敲击后自动更新...

$searchBox = $("input", $(element));
setTimeout(function () {
    $searchBox.focus();
}, 1);

   onInputAsYouType(element, 1, function (text) {
    contentItem.screen.[CREATED PARAM NAME] = text; //SearchText here is the data item in the screen designer linked to the query parameter
});

function onInputAsYouType(element, numberOfRequiredChars, done) {
    var inputbox = $("input", $(element));
    inputbox.on("input", function (e) {
        var text = $(this).val();
        if (text.length >= numberOfRequiredChars)
            done(text);
    });
};

};