我有一个搜索屏幕,显示来自'项目'实体。其中一个字段是指向“客户”的链接。实体,具有客户端名称。
我可以使用数据上方的搜索框按项目名称,日期等进行搜索,但我无法按客户名称搜索。我猜是因为它实际上是对单独实体的引用。
我怎样才能使用搜索框按客户名搜索项目?
这里试图解释清楚的是数据库布局。
Project
------
ProjName
ProjType
ProjComment
Client --------------- Client
-----
Name
Address
我可以按项目字段搜索,但不能搜索客户端名称。
答案 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);
});
};
};