我已经对此做了大量研究,没有一个例子是有用的或不适用的。我想做的是当用户加载“添加”屏幕时,我希望“详细信息选择器”在创建屏幕时显示一个名称,而不是每次都要选择它。即时通讯可以做到,但我的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 });
具有相同的要求,我们实现了以下帮助器功能:-
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,将“ Contact”更改为“ CustomerName”,将“ Contacts”更改为“ ShippingContacts”。同样,基于您的查找表具有一个名为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 });
};
在我的代码示例中,主表称为“客户”,而查找表称为“联系人”。主表中的“联系人”字段引用“联系人”表中的条目。联系人表具有一个名为“名称”的字段和一个名称设置为“克里斯·库克”值的记录(defaultValue和过滤器变量引用这种情况)。
下图显示了正在调试的screen.Customer属性:-
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句