Compartilhar via


Walkthrough: criando um AJAX básica ASP.NET-habilitado de Web Parts

Esta explicação passo a passo descreve as etapas para criar um AJAX ASP.NET básico-habilitado Web Part que você pode adicionar a sua página Web Part. O exemplo cria um SayHello de Web Parts que deriva da ASP.NET 2.0 WebPart de classe (in the System.Web.UI.WebControls.WebParts Namespace na ASP.NET Class Library) para uso em um site Windows SharePoint Services 3.0 wssversion3.

Observação

Para obter mais informações sobre ASP.NET Web Parts, consulte ASP.NET Web Parts Overview e Apresentando controles da Web Part.

Pré-requisitos

Windows SharePoint Services 3.0

Visual Studio 2005

Etapa 1: Criar um projeto da Web Part

Para criar um AJAX-habilitado controle Web Part, você iniciar criando um projeto de biblioteca de classes na biblioteca de classes em Visual Studio 2005.

Para criar um projeto ASP.NET Web Part em Visual Studio 2005

  1. Inicie Visual Studio 2005.

  2. No menu Arquivo , apontar para nova e, em seguida, clique Project .

  3. Em Tipos de Projeto, em Visual Basic ou C#, selecione Windows .

  4. No painel de modelos, selecione da biblioteca de classes .

  5. Tipo Sample.SayHello como nome do projeto.

Etapa 2: Renomear a classe base e exigido adicionar espaços para nome

Depois de criar o projeto, um em branco arquivo classe é exibido. Você pode alteração nome classe do Class1 para identificar facilmente seu novo Web Part usar como padrão. Em um projeto de biblioteca de classes, apenas poucos espaços para nome são incluídos. Você precisa adicionar exigido dois espaços para nome e referências aos seus conjuntos de módulos (assemblies). Você também deve derivar de classe base de System.Web.UI.WebControls.WebParts.WebPart. Em seguida, você deve adicionar duas variáveis globais para atualização interface de usuário (interface do usuário).

Para adicionar referências de espaço para nome e os componentes compartilhados interface do usuário

  1. Renomeie a classe usar como padrão selecionando Class1.cs na Gerenciador de Soluções, clique com o botão direito do mouse, clique Renomear e tipo SayHelloWebPart como nome de arquivo.

  2. O menu do projeto, clique em Adicionar Referência .

  3. No Add Reference diálogo na guia .NET, selecione System.Web.Extensions clique e OK .

  4. Repita as etapas 2 e 3 para o espaço para nome System.Web System.Web.

  5. Na área de referências do arquivo de classe, adicionar uma referência ao System.Web.UI.WebControls e crie duas variáveis particulares para o interface do usuário, conforme o seguinte codificar.

                              using System;
    using System.Text;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    namespace Sample.SayHello
    {
       public class SayHelloWebPart : WebPart
       {
         private Label displayName;
         private TextBox inputName;
       }
    }
    
                              Imports System
    Imports System.Text
    Imports System.Web.UI
    Imports System.Web.UI.WebControls
    Imports System.Web.UI.WebControls.WebParts
    Public Class SayHelloWebPart
       Inherits WebPart
       Private displayName As Label
       Private inputName as TextBox
    End Class
    
  6. Agora você criou uma estrutura básica para a Web Part.

Etapa 3: Substituir CreateChildControls e criar um botão manipulador de eventos

Depois de configurar a nova classe para trabalhar como parte da Web, você deve substituir o método CreateChildControls CreateChildControls para compilar o interface do usuário. Você também deve adicionar um manipulador botão para atualizar os dados exibir.

Para substituir CreateChildControls e criar um botão manipulador de eventos

  1. No arquivo SayHelloWebPart.cs SayHelloWebPart.cs, copiar e colar o seguinte codificar para substituir o CreateChildControls CreateChildControls método

                              protected override void CreateChildControls()
    {
       base.CreateChildControls();
    
       //Fix for the UpdatePanel postback behaviour.
       EnsurePanelFix();
    
       LinkButton sayHello = new LinkButton();
       UpdatePanel refreshName = new UpdatePanel();
       ScriptManager scriptHandler = new ScriptManager();
       displayName = new Label();
       inputName = new TextBox();
    
       //Set up control properties.
       this.displayName.ID = "displayName";
       this.displayName.Text = "Hello!";
       this.inputName.ID = "inputName";
       sayHello.ID = "sayHello";
       sayHello.Text = "Say Hello";
       scriptHandler.ID = "scriptHandler";
       refreshName.ID = "refreshName";
       refreshName.UpdateMode = UpdatePanelUpdateMode.Conditional;
       refreshName.ChildrenAsTriggers = true;
    
       //Add the EventHandler to the Button.
       sayHello.Click += new EventHandler(ClickHandler);
    
       //Add the user interface (UI) controls to the UpdatePanel.
       refreshName.ContentTemplateContainer.Controls.Add(this.inputName);
       refreshName.ContentTemplateContainer.Controls.Add(sayHello);
       refreshName.ContentTemplateContainer.Controls.Add(this.displayName);
    
       //The ScriptManager control must be added first.
       this.Controls.Add(scriptHandler);
       this.Controls.Add(refreshName);
    }
    
                              Protected Overrides Sub CreateChildControls()
       MyBase.CreateChildControls()
    
       'Fix for the UpdatePanel postback behaviour.
       EnsurePanelFix()
    
       Dim sayHello As New LinkButton
       Dim refreshName As New UpdatePanel
       Dim scriptHandler As New ScriptManager
       displayName = New Label
       inputName = New TextBox
    
       'Set up control properties.
       Me.displayName.ID = "displayName"
       Me.displayName.Text = "Hello!"
       Me.inputName.ID = "inputName"
       sayHello.ID = "sayHello"
       sayHello.Text = "Say Hello"
       scriptHandler.ID = "scriptHandler"
       refreshName.ID = "refreshName"
       refreshName.UpdateMode = UpdatePanelUpdateMode.Conditional
       refreshName.ChildrenAsTriggers = True
    
         'Add the EventHandler to the Button.
       AddHandler sayHello.Click, _
         New EventHandler(AddressOf ClickHandler)
    
       'Add the user interface (UI) controsl to the UpdatePanel
    
       refreshName.ContentTemplateContainer.Controls.Add(Me.displayName)
       refreshName.ContentTemplateContainer.Controls.Add(Me.inputName)
       refreshName.ContentTemplateContainer.Controls.Add(sayHello)
    
       'The ScriptManager must be added first.
       Me.Controls.Add(scriptHandler)
       Me.Controls.Add(refreshName)
    End Sub
    
  2. Em seguida, no arquivo SayHelloWebPart.cs SayHelloWebPart.cs, copiar e colar o seguinte codificar.

                              private void ClickHandler(object sender, EventArgs args)
    {
       this.displayName.Text = "Hello, " 
         + this.inputName.Text.ToString() + ".";
    }
    
                              Private Sub ClickHandler(ByVal sender As Object, _
                  ByVal args As EventArgs)
       Me.displayName.Text = "Hello, " & Me.inputName.Text & "!"
    End Sub
    
  3. Agora você criou a interface de usuário básica e botão manipulação evento.

Para controles ASP.NET que usam a função _doPostBack() JavaScript para confirmação alterações, um regular de página inteira postback evento pode ocorrer mesmo quando o Web Part está dentro um controle UpdatePanel. Windows SharePoint Services 3.0 e armazenar em cache ASP.NET AJAX certas ações forma, que podem causar um estar em conflito com entre SharePoint e ASP.NET AJAX. A alteração esse comportamento, você deve codificar adicionar scripts que estão execução no Windows SharePoint Services 3.0.

Etapa 4: modificar scripts 3.0 serviços SharePoint Windows para comportamento doPostBack() alteração

Para modificar scripts para garantir comportamento adequado doPostBack()

  1. No arquivo SayHelloWebPart.cs SayHelloWebPart.cs, copiar e colar o seguinte codificar.

                              private void EnsurePanelFix()
    {
       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(SayHelloWebPart), "UpdatePanelFixup", 
         fixupScript, true);
       }
    }
    
                              Private Sub EnsurePanelFix()
       If Me.Page.Form IsNot Nothing Then
         Dim fixupScript As New StringBuilder()
    
         With fixupScript
           .AppendLine("_spBodyOnLoadFunctionNames.push" & _
           "(""_initFormActionAjax"");")
           .AppendLine("function _initFormActionAjax()")
           .AppendLine("{")
           .AppendLine("if (_spEscapedFormAction == " & _
           "document.forms[0].action)")
           .AppendLine("{")
           .AppendLine("document.forms[0]._initialAction = " & _
           document.forms[0].action;")
           .AppendLine("}")
           .AppendLine("}")
           .AppendLine("var RestoreToOriginalFormActionCore = " & _
           RestoreToOriginalFormAction;")
           .AppendLine("RestoreToOriginalFormAction = function()")
           .AppendLine("{")
           .AppendLine("   if (_spOriginalFormAction != null)")
           .AppendLine("   {")
           .AppendLine("       RestoreToOriginalFormActionCore();")
           .AppendLine("       document.forms[0]._initialAction = " & _
           "document.forms[0].action;")
           .AppendLine("   }")
           .AppendLine("}")
         End With
         ScriptManager.RegisterStartupScript(Me, _
           GetType(SayHelloWebPart), "UpdatePanelFixup", _
           fixupScript.ToString(), True)
       End If
    End Sub
    
  2. Agora você modificou os scripts para garantir postback adequado manipulação.

Depois de adicionar todas as sua codificar para seu projeto Web Part, você pode compilar o Web Part exemplo e implantá-lo. Para obter mais informações sobre como implantar um Web Part, consulte Walkthrough: Criando uma básica da Web Part.

Consulte também

Outros recursos

Soluções e pacotes da Web Part