Mensagem de erro personalizada do People Picker
-
29-09-2020 - |
Pergunta
Eu tenho o seletor de pessoas na minha Web Part personalizada (SP 2013) e todos os meus controles em updatePanel.O requisito é definir uma mensagem de erro personalizada para o seletor de pessoas.Consigo alterar a mensagem de erro no evento de clique do botão (consulte o trecho de código) e também posso fazer o mesmo no jquery.Mas como faço isso quando o usuário clica em "Verificar nomes"?Eu sei que é uma marca âncora com o título "Verificar nomes".
Eu prefiro ter essa funcionalidade no code behind ao invés de usar JQuery.
abaixo é, o que eu fiz
Btn_Click()
{
if(pplEditorId.IsValid)
{
pplEditorId.Errormessage="Invalid user id";
}
}
Nenhuma solução correta
Outras dicas
O controle PeopleEditor
está fazendo um retorno de chamada para a própria página quando você pressiona o botão "Verificar nomes".
Para injetar sua própria mensagem de erro personalizada quando a validação do botão "Verificar nomes" for falsa, você precisa herdar do controle PeopleEditor
:
using Microsoft.SharePoint.WebControls;
using System.Web.UI;
using System.Xml;
namespace PeoplePickerCustomError
{
public class CustomPeopleEditor : PeopleEditor, ICallbackEventHandler
{
private const string CUSTOM_ERROR_MESSAGE = "My custom error message!";
public new string GetCallbackResult()
{
XmlDocument xmlDoc = new XmlDocument();
string originalResponse = base.GetCallbackResult();
xmlDoc.LoadXml(originalResponse);
// if there's no error return original response
if (string.IsNullOrEmpty(xmlDoc.DocumentElement.Attributes["Error"].Value))
{
return originalResponse;
}
xmlDoc.DocumentElement.SetAttribute("Error", CUSTOM_ERROR_MESSAGE);
string customResponse = xmlDoc.OuterXml;
return customResponse;
}
public new void RaiseCallbackEvent(string eventArgument)
{
base.RaiseCallbackEvent(eventArgument);
}
}
}
Em seguida, basta referenciá-lo em sua webpart:
<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="PeoplePickerHolderUserControl.ascx.cs" Inherits="PeoplePickerCustomError.PeoplePickerHolder.PeoplePickerHolderUserControl" %>
<%@ Register TagPrefix="custom" Namespace="PeoplePickerCustomError" Assembly="PeoplePickerCustomError, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c6a38d5a688a5dd0" %>
<custom:CustomPeopleEditor runat="server" ID="pePeoplePicker" />
(altere as informações de montagem na tag Register
para corresponder às suas)
você pode tentar algo assim
<%@PageLanguage="C#"%><%@RegisterTagprefix="wssawc"Namespace="Microsoft.SharePoint.WebControls"Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"%><%@RegisterTagprefix="SharePoint"Namespace="Microsoft.SharePoint.WebControls"Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"%><scriptrunat="server">
protected void btnCheck_Click(object sender,EventArgs e)
{
bool IsValid = this.userPicker.IsValid;
if(!IsValid)
{
this.userPicker.ErrorMessage = "Invalid user id";
}
}
</script><!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title>Untitled Page</title></head><body><formid="form1"runat="server"><div><wssawc:PeopleEditorAllowEmpty=falseValidatorEnabled="true"id="userPicker"runat="server"ShowCreateButtonInActiveDirectoryAccountCreationMode=trueSelectionSet="User,SecGroup,SPGroup"IsValid=/></div><asp:ButtonID="btnCheck"runat="server"Text="Button"OnClick="btnCheck_Click"/></form></body></html>