SharePoint 使用查找下拉列表并获取值
SharePoint working with lookup dropdowns and getting values
从下拉查找字段中获取要返回的值似乎有点困难。我有以下代码可以从我正在查找的列表中获取值:
var siteUrl = _spPageContextInfo.webServerRelativeUrl;
function getDropdownValues(tempNumTitle) {
var clientContext = new SP.ClientContext(siteUrl);
var tempDropdownValueList = clientContext.get_web().get_lists().getByTitle('Temps');
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View>' +
'<RowLimit>' +
'100' +
'</RowLimit>' +
'</View>');
this.tempQuery = tempDropdownValueList.getItems(camlQuery);
clientContext.load(tempQuery);
clientContext.executeQueryAsync(
// on success of getting Temp Values from dropdown
// match it with the tempNum entry
function (sender, args) {
var tempDropDownValues = {};
var tempEnumerator = tempQuery.getEnumerator();
while(tempEnumerator.moveNext()) {
var tempItem = tempEnumerator.get_current();
var tempTitle = tempItem.get_item('Title');
var tempId = tempItem.get_item('ID');
tempDropDownValues[tempTitle] = tempId;
}
selectTemp(tempNumTitle, tempDropdownValues)
},
// on failure
function (sender, args) {
console.info('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
);
}
它执行得很好,为我提供了下拉值。然后,它使用我们要查找的 tempNumTitle 的参数调用函数 selectTemp,并检索下拉列表值。这是下一个函数:
function selectTemp(tempNumTitle, tempValues) {
var clientContext = new SP.ClientContext(siteUrl);
var tempMatchValueList = clientContext.get_web().get_lists().getByTitle('Numbers-Temp');
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View>' +
'<Query>' +
'<Where>' +
'<Eq>' +
'<FieldRef Name="Title" />' +
'<Value Type="Text">' + tempNumTitle + '</Value>' +
'</Eq>' +
'</Where>' +
'</Query>' +
'</View>');
this.tempMatchValueQuery = tempMatchValueList.getItems(camlQuery);
clientContext.load(tempMatchValueQuery);
clientContext.executeQueryAsync(
// on success
function (sender, args) {
var temp = '';
tempEnumerator = tempMatchValueQuery.getEnumerator();
while(tempEnumerator.moveNext()) {
var tempItem = tempEnumerator.get_current();
temp = tempItem.get_item('Temp0');
}
},
// on failure
function (sender, args) {
console.info('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
);
}
它几乎让我找到了我正在寻找的东西,但我得到了这样的东西:
温度:{$1E_1: 3, $2e_1: "Temp 3"}
我想要 $2e_1 或 "Temp 3" 的值。我怎样才能得到那个价值,而不只是去 temp["$2e_1"]?
访问查找列或人员选择器列时,列值是复杂类型而不是简单字符串。
您可以对返回的对象调用 .get_lookupValue()
以获取查找列值的文本表示,或 .get_lookupId()
以获取查找列表(或网站集的用户信息列表(如果是人物选择器列)。
所以在你的情况下,假设 "Temp0" 是查找列的内部名称,你应该能够这样做:
temp = tempItem.get_item('Temp0').get_lookupValue();
从下拉查找字段中获取要返回的值似乎有点困难。我有以下代码可以从我正在查找的列表中获取值:
var siteUrl = _spPageContextInfo.webServerRelativeUrl;
function getDropdownValues(tempNumTitle) {
var clientContext = new SP.ClientContext(siteUrl);
var tempDropdownValueList = clientContext.get_web().get_lists().getByTitle('Temps');
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View>' +
'<RowLimit>' +
'100' +
'</RowLimit>' +
'</View>');
this.tempQuery = tempDropdownValueList.getItems(camlQuery);
clientContext.load(tempQuery);
clientContext.executeQueryAsync(
// on success of getting Temp Values from dropdown
// match it with the tempNum entry
function (sender, args) {
var tempDropDownValues = {};
var tempEnumerator = tempQuery.getEnumerator();
while(tempEnumerator.moveNext()) {
var tempItem = tempEnumerator.get_current();
var tempTitle = tempItem.get_item('Title');
var tempId = tempItem.get_item('ID');
tempDropDownValues[tempTitle] = tempId;
}
selectTemp(tempNumTitle, tempDropdownValues)
},
// on failure
function (sender, args) {
console.info('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
);
}
它执行得很好,为我提供了下拉值。然后,它使用我们要查找的 tempNumTitle 的参数调用函数 selectTemp,并检索下拉列表值。这是下一个函数:
function selectTemp(tempNumTitle, tempValues) {
var clientContext = new SP.ClientContext(siteUrl);
var tempMatchValueList = clientContext.get_web().get_lists().getByTitle('Numbers-Temp');
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View>' +
'<Query>' +
'<Where>' +
'<Eq>' +
'<FieldRef Name="Title" />' +
'<Value Type="Text">' + tempNumTitle + '</Value>' +
'</Eq>' +
'</Where>' +
'</Query>' +
'</View>');
this.tempMatchValueQuery = tempMatchValueList.getItems(camlQuery);
clientContext.load(tempMatchValueQuery);
clientContext.executeQueryAsync(
// on success
function (sender, args) {
var temp = '';
tempEnumerator = tempMatchValueQuery.getEnumerator();
while(tempEnumerator.moveNext()) {
var tempItem = tempEnumerator.get_current();
temp = tempItem.get_item('Temp0');
}
},
// on failure
function (sender, args) {
console.info('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
);
}
它几乎让我找到了我正在寻找的东西,但我得到了这样的东西: 温度:{$1E_1: 3, $2e_1: "Temp 3"}
我想要 $2e_1 或 "Temp 3" 的值。我怎样才能得到那个价值,而不只是去 temp["$2e_1"]?
访问查找列或人员选择器列时,列值是复杂类型而不是简单字符串。
您可以对返回的对象调用 .get_lookupValue()
以获取查找列值的文本表示,或 .get_lookupId()
以获取查找列表(或网站集的用户信息列表(如果是人物选择器列)。
所以在你的情况下,假设 "Temp0" 是查找列的内部名称,你应该能够这样做:
temp = tempItem.get_item('Temp0').get_lookupValue();