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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top