我已经对此进行了相当多的研究,并且没有示例有用或适用。我想要做的是当用户加载添加屏幕时,我希望细节选择器在创建屏幕时显示名称,而不是每次都必须选择它。我确定这可以做到,但我的javascript技能缺乏。
感谢您的帮助, 以下是一个例子:
这个名称存储在一个表中,可以在这个模态选择器/详细信息选择器中搜索,但是你可以想象,如果50%的时间需要这个值,那么手动添加它不仅耗费时间而且会变成有点单调乏味
在每个项目上按contentItem.value
后,可以使用element.innerText
或post render
操作文本框,但这不适用于此类控件,我会看到低于错误:
提供一些可能有用的有用信息:
基于以下答案我是否需要在顶部函数中替换任何内容,然后根据代码的第二部分编写,在哪里编写defaultLookup(screen.Customer, "Contact", "Contacts",
需要去哪里?
我试图改变的例子,不幸的是这不起作用
var defaultValue = "Test User";
var filter = "(ContactName eq " + msls._toODataString(defaultValue, ":String") + ")";
defaultLookup(screen.OrderRequest, "ContactName", "ShippingContacts", { filter: filter });
答案 0 :(得分:2)
有了相同的要求后,我们实施了以下帮助功能: -
function defaultLookup (entity, destinationPropertyName, sourceCollectionName, options) {
/// <summary>
/// Defaults an entity's lookup property
/// </summary>
/// <param name="entity" type="Object">The entity featuring the lookup property to default</param>
/// <param name="destinationPropertyName" type="String">The lookup property against the entity to default</param>
/// <param name="sourceCollectionName" type="String">The collection from which to source the lookup value</param>
/// <param name="options" type="PlainObject" optional="true">
/// A set of key/value pairs used to select additional configuration options. All options are optional.
/// <br/>- String filter: If supplied, defines the match condition for the required default, otherwise the lookup defaults to the first entry in the source collection
/// </param>
options = options || {}; // Force options to be an object
var source = myapp.activeDataWorkspace.ApplicationData[sourceCollectionName]; // DataServiceQuery
var query = {}; //DataServiceQuery
if (options.filter) {
query = source.filter(options.filter);
} else {
query = source.top(1);
}
query.execute().then(function (result) {
entity[destinationPropertyName] = result.results[0];
});
};
在您的情况下,您需要将ApplicationData更改为读取ProjectData。
这可以在屏幕创建的事件中调用,如下所示: -
myapp.AddEditCustomer.created = function (screen) {
var defaultValue = "Chris Cook";
var filter = "(Name eq " + msls._toODataString(defaultValue, ":String") + ")";
defaultLookup(screen.Customer, "Contact", "Contacts", { filter: filter });
};
在您的情况下,screen.Customer应更改为screen.OrderRequest,&#34; Contact&#34;应更改为&#34;客户名称&#34;和&#34;联系人&#34;应更改为&#34; ShippingContacts&#34;。此外,根据您的查询表有一个名为ContactName的字段,过滤字符串需要引用ContactName而不仅仅是名称。
或者,可以从实体创建的事件(在UserCode脚本部分中)调用此帮助程序,如下所示: -
myapp.Customer.created = function (entity) {
var defaultValue = "Chris Cook";
var filter = "(Name eq " + msls._toODataString(defaultValue, ":String") + ")";
defaultLookup(entity, "Contact", "Contacts", { filter: filter });
};
在我的代码示例中,主表名为&#34; Customers&#34;并且查询表被称为&#34;联系人&#34;。 &#34;联系&#34;主表中的字段引用Contacts表中的条目。 Contacts表有一个名为&#34; Name&#34;的字段。以及名称设置为&#34; Chris Cook&#34;的记录。 (defaultValue和filter变量引用这种情况。)
下图显示了正在调试的screen.Customer属性: -