Tem momentos que queremos aplicar algumas réguas nos campos
de uma lista, para isso podemos aplicar diferentes modos:
1) aplicando sobre a própria coluna da lista. Sharepoint já
disponibiliza métodos para aplicar validações nos campos. Pode ser aplicada via
Schema.xml da lista ou via web na configuração da lista.
2) pode ser que se necessite validação de um formulário,
aonde seja necessário que a validação seja comparando dois colunas o mais,
nesse caso pode ser aplicada no Front-End, utilizando javascript. Se faz uma
sobrecarrega do método do lado cliente "PreSaveItem".
3) pode também ter a necessidade de fazer uma configuração
aonde os anteriores não conseguem satisfazer. Aí pode utilizar a criação de código
em eventos. Os eventos podem ser executados em diferentes momentos exemplo
criar uma lista, atualizar um item, desativar uma Feature.
Com respeito a utilização de javascript, se pode fazer uso
de um método para capturar o evento que envia salvar os items do formulário,
dito evento é “PreSaveItem”.
Podemos ver um exemplo aonde temos um formulário com dois
campos datas, que pode ser Data Inicio e Data Fim e ao salvar o item devemos verificar
que a Data Inicio não seja maior a Data Fim, uma verificação bem comum em formulários
aonde tem datas que tem certa condição lógica.
Para isso editamos a página do formulário (Novo item e Editar Item) e incluímos a web part "Editor de Script" do grupo "Mídia e Conteúdo"
Editamos o trecho de Script e incluímos nosso código de exemplo:
function PreSaveAction()
{
var date1 = getTagFromIdentifierAndTitle("INPUT","DateTimeFieldDate","Data Inicio");
var date2 = getTagFromIdentifierAndTitle("INPUT","DateTimeFieldDate","Data Fim");
var arrDate1 = date1.value.split("/");
var useDate1 = new Date(arrDate1[2], arrDate1[1]-1, arrDate1[0]);
var arrDate2 = date2.value.split("/");
var useDate2 = new Date(arrDate2[2], arrDate2[1]-1, arrDate2[0]);
if(useDate1 > useDate2)
{
alert("A Data Fim não supera a Data Inicio");
return false;
}
return true; // OK to proceed with the save item
}
function getTagFromIdentifierAndTitle(tagName, identifier, title) {
var len = identifier.length;
var tags = document.getElementsByTagName(tagName);
for (var i = 0; i < tags.length; i++) {
var tempString = tags[i].id;
if (tags[i].title == title && (identifier == "" ||
tempString.indexOf(identifier) == tempString.length - len))
{
return tags[i];
}
}
return null;
}
</script>
Ao tentar cadastrar um
item, fazemos click no botão Salvar, isto dispara o evento PreSAveItem
se ativa e analisa nossa condição de Datas, si acontece que sua Data Fim
seja menor que
a Data Inicio, dispara o mensagens de alerta e não deixa continuar com o
processo de salvar:
Atte.
No hay comentarios:
Publicar un comentario