Alguns comandos do Jquery que são úteis para usar nos fields do SharePoint:
Com o comando abaixo eu oculto a lookup de Centro de custos:
$('nobr:contains("Centro de Custo")').closest('tr').hide();
Com o comando abaixo eu adiciono uma label e um campo textbox a uma variável,
a variável já contem as classes css para que fique de acordo com os campos do
NewForm do SharePoint:
var newInput = $("<tr><td nowrap='true' valign='top' width='113px' class='ms-formlabel'>
<span class='ms-h3 ms-standardheader'>Centro de Custo
<span class='ms-accentText' title='Este é um campo obrigatório.'>*</span></span></td>
<td valign='top' width='350px' class='ms-formbody'><span dir='none'>
<input type='text' onkeypress='getAllCentrosCustos()' maxlength='255'
id='txtCentroCusto' style='ime-mode : ' class='ms-long ms-spellcheck-true' /><br/>
</span><span class='ms-metadata'>Centro de Custo Responsável pelo Equipamento</span>
</td></tr>");
=====================================================================================
No comando a seguir adiciono o campo de TextBox adicionado na variável no lugar da
lookup de centro de custos com Jquery
$('nobr:contains("Centro de Custo")').closest('tr').after(newInput);
=====================================================================================
Com o comando a seguir pego o evento de alteração dentro do textbox criado, assim
quando um valor for selecionado ou inputado dentro do textbox ele irá executar a
função carregaDrop.
$("#txtCentroCusto").change(function() {
carregaDrop();
})
=====================================================================================
para que o campo de textbox txtCentroCusto se torne um campo de auto complete,
primeiro é necessário criar a função, aqui abaixo a função do autocomplete:
function getAllCentrosCustos(){
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl +
"/_api/web/lists/getbytitle('Centro de Custo')/items?$top=1000",
"/_api/web/lists/getbytitle('Centro de Custo')/items?$top=1000",
//a url com o filtro Top=1000 serve para mostrar mais de 100 registros
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
var dataArray = [];
var idCC = [];
for (var j = 0; j < data.d.results.length; j++) {
dataArray.push(data.d.results[j].CC);
}
$("#txtCentroCusto").autocomplete({
source: dataArray
});
},
error: function (data) {
failure(data);
}
});
}
====================================================================================
Para salvar o item selecionado no textbox na lookup devemos usar a função abaixo:
function carregaDrop()
{
var text = $('#txtCentroCusto').val();
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl +
"/_api/web/lists/getbytitle('Centro de Custo')/items?$top=1000",
"/_api/web/lists/getbytitle('Centro de Custo')/items?$top=1000",
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
var items = data.d.results;
for(var i = 0; i < data.d.results.length; i++) {
var itemCC = data.d.results[i].CC;
var itemId = data.d.results[i].ID;
if(itemCC === text){
var centoC = itemCC;
$("select[title='Centro de Custo Campo Obrigatório']")
.append("<option selected='selected' value='"+ itemId +"'>"+ itemCC +"</option>");
var newId = itemId;
var newCC = itemCC;
}
}
PreSaveAction(newId, newCC);
},
error: function (data) {
failure(data);
}
});
}
=====================================================================================
Agora a função que será ativada antes de salvar, assim que o botão Salvar for clicado:
function PreSaveAction(newId, newCC)
{
if ($("select[title='Centro de Custo Campo Obrigatório']").val() == "0")
{
carregaDrop();
}
else
{
if ($("select[title='Centro de Custo Campo Obrigatório']").val() == "undefined")
{
$("select[title='Centro de Custo Campo Obrigatório']")
.append("<option selected='selected' value='"+ newId +"'>"+ newCC +"</option>");
}
else
{
return true;
}
}
}
Por fim esses comandos são muito úteis para o SharePoint.
0 comentários:
Postar um comentário