У меня есть функциональность в форме custome, где, если я выберу имя ресурса (столбец сборщиков), остальные столбцы EmpID, Projects и Manager должны быть заполнены. Все эти столбцы находятся в списке с именем "EmpDetails". Я попытался использовать запрос CAML, но не смог его выполнить. Это мой код:
<tr class="container">
<div id="container">
<table id="table">
<thead>
<tr>
<th>Resource Name</th>
<th>EmpID</th>
<th>Projects</th>
<th>Manager</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><span id="resourcename"></span></td>
<td><input type="text" id="txtempid" placeholder="Emp ID"/></td>
<td><input type="text" id="txtprojects" placeholder="Projects"/></td>
<td><input type="text" id="txtreportmgr" placeholder="Reporting Manager"/></td>
<td><input type="button" id="delrow" value="-" onclick="deleteRow(this)"/> </td>
<td><input type="button" id="addrow" value="+" onclick="addRow()"/> </td>
</tr>
</tbody>
</table>
</div>
</tr>
Код Javascript:
$( document ).ready(function() {
ConvertoToRequestPeoplePicker('resourcename');
BindData();
});
function BindData()
{
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function () {
context = new SP.ClientContext.get_current();
LoadingMessage();
SPLoaded();
});
}
function SPLoaded()
{
try
{
var resourceInfoList = context.get_web().get_lists().getByTitle('EmpDetails');
var resourceInfoQuery = new SP.CamlQuery();
resourceInfoQuery.set_viewXml( '<View>' +
'<ViewFields>' +
'<FieldRef Name=\'EmpID\' />' +
'<FieldRef Name=\'Projects\' />' +
'<FieldRef Name=\'Manager\' />' +
'</ViewFields>' +
'<Query>' +
'<Where>' +
'<Value Type="User">' + itm.get_item("Employee").get_lookupId() + '</Value>'+
'</Where>' +
'<OrderBy>' +
'<FieldRef Name="Title" Ascending="TRUE" />' +
'</OrderBy>' +
'</Query>' +
'</View>');
var resourceInfoListItems = resourceInfoList.getItems(resourceInfoQuery);
context.load(resourceInfoListItems);
context.executeQueryAsync(Function.createDelegate(null, LoadConfigurationValues), Function.createDelegate(this, function (sender, arg) { alert("Error in getLoginUser : " + arg.get_message()); waitDialogLoad.close(SP.UI.DialogResult.OK); }));
}
catch(ex)
{
alert("Something went wrong : "+ex.message);
waitDialogLoad.close(SP.UI.DialogResult.OK);
}
}
Я новичок в SharePoint и получил вышеуказанный код с некоторого сайта. Я не мог, это правильный код или нет. Пожалуйста помоги.
Кажется, ваш CAML-запрос недопустим... "Где" -part такого запроса должен быть сформирован следующим образом:
<Where>
<compareOperator>
<Value/>
<FieldRef/>
</compareOperator>
</Where>
compareOperator обычно имеет что-то вроде "Eq", "Lt" и т.д., обычно значение получает атрибут типа, а fieldref определяет, какое поле в элементе списка (или библиотеки) следует сравнивать со значением в запросе.
все вместе мы получаем пример:
<View>
<Query>
<Where>
<Geq>
<FieldRef Name='ID'/>
<Value Type='Number'>1</Value>/Geq>
</Where>
</Query>
</View>
Для более глубокого просмотра вы можете проверить sp-jsom how-to ;>