ID do artigo: 941955 - Última revisão: quarta-feira, 10 de outubro de 2007 - Revisão: 1.1

Uma Web Part que contém um controle UpdatePanel do ASP.NET AJAX 1.0 que usa a função _doPostBack() não funciona quando a URL do site SharePoint hospedagem contém caracteres internacionais

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Recolher tudo

Sintomas

Considere o seguinte cenário:
  • Usar o Microsoft AJAX 1.0 Control toolkit para o Microsoft ASP.NET ou as extensões AJAX 1.0 do ASP.NET criar uma Web Part personalizada para um site da Web Microsoft Office SharePoint Server 2007 ou para um Microsoft Windows site do SharePoint Services 3.0.
  • A Web Part personalizada contém um controle UpdatePanel que inclui uma função _doPostBack() , como um controle LinkButton.
  • Você adicionar a Web Part personalizada para um site do SharePoint Services 2007 ou a um site do Windows SharePoint Services 3.0. A URL do site Web do Windows SharePoint Services 3.0 ou o site do SharePoint Server 2007 contém caracteres internacionais ou caracteres específicos do idioma.
  • Você visitar o site do Windows SharePoint Services 3.0 ou o site do SharePoint Server 2007. Em seguida, tentar atualizar o conteúdo selecionado na Web Part.
Nesse cenário, uma solicitação de postback regular ocorre em vez de uma solicitação de postback assíncrona do ASP.NET AJAX.

Causa

Esse problema ocorre porque o Windows SharePoint Services e ASP.NET AJAX cache alguns tipos de ações do formulário. Portanto, podem ocorrer conflitos.

Como Contornar

Para contornar esse problema, use código que se pareça com o exemplo a seguir para adicionar um controle UpdatePanel em uma Web Part no SharePoint Server 2007 ou no Windows SharePoint Services 3.0.
 private void EnsureUpdatePanelFixups()
        {
               if (this.Page.Form != null)
               {
                   String fixupScript = @"
_spBodyOnLoadFunctionNames.push(""_initFormActionAjax"");
function _initFormActionAjax()
{
    if (_spEscapedFormAction == document.forms[0].action)
    {
        document.forms[0]._initialAction = document.forms[0].action;
    }
}
var RestoreToOriginalFormActionCore = RestoreToOriginalFormAction;
RestoreToOriginalFormAction = function()
{
    if (_spOriginalFormAction != null)
    {
        RestoreToOriginalFormActionCore();
        document.forms[0]._initialAction = document.forms[0].action;
    }
}
o código a seguir é um exemplo de uma Web Part que inclui o controle UpdatePanel anterior. Additionally, the EnsureUpdatePanelFixups method is used to register the Script Manager control in the Web Part.
 public class AjaxUpdatePanelPart : WebPart
    {
        private Label label;
        private TextBox textBox;
        protected override void  CreateChildControls()
        {
            base.CreateChildControls();
            this.EnsureUpdatePanelFixups();
            UpdatePanel up = new UpdatePanel();
            up.ID = "UpdatePanel1";
            up.ChildrenAsTriggers = true;
            up.UpdateMode = UpdatePanelUpdateMode.Conditional;
            this.Controls.Add(up);
            this.textBox = new TextBox();
            this.textBox.ID = "TextBox";
            up.ContentTemplateContainer.Controls.Add(this.textBox);
            this.label = new Label();
            this.label.Text = "Enter your name.";
            up.ContentTemplateContainer.Controls.Add(this.label);
            LinkButton button = new LinkButton();
            button.Text = "Say Hello";
            button.ID = "HelloButton";  // Some controls need an ID to make them work with AJAX postbacks.
            button.Click += new EventHandler(HandleButtonClick);
            up.ContentTemplateContainer.Controls.Add(button);
        }
        private void HandleButtonClick(object sender, EventArgs eventArgs)
        {
            this.label.Text = "Hello " + this.textBox.Text;
        }
        private void EnsureUpdatePanelFixups()
        {
               if (this.Page.Form != null)
               {
                   String fixupScript = @"
_spBodyOnLoadFunctionNames.push(""_initFormActionAjax"");
function _initFormActionAjax()
{
    if (_spEscapedFormAction == document.forms[0].action)
    {
        document.forms[0]._initialAction = document.forms[0].action;
    }
}
var RestoreToOriginalFormActionCore = RestoreToOriginalFormAction;
RestoreToOriginalFormAction = function()
{
    if (_spOriginalFormAction != null)
    {
        RestoreToOriginalFormActionCore();
        document.forms[0]._initialAction = document.forms[0].action;
    }
}
";
                ScriptManager.RegisterStartupScript(this, typeof(AjaxUpdatePanelPart), "UpdatePanelFixup", fixupScript, true);
            }
        }
    }

A informação contida neste artigo aplica-se a:
  • Microsoft Office SharePoint Server 2007
  • Microsoft Windows SharePoint Services 3.0
Palavras-chave: 
kbmt kbexpertiseinter kbtshoot kbprb KB941955 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 941955  (http://support.microsoft.com/kb/941955/en-us/ )