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
Inicie Visual Studio 2005.
No menu Arquivo , apontar para nova e, em seguida, clique Project .
Em Tipos de Projeto, em Visual Basic ou C#, selecione Windows .
No painel de modelos, selecione da biblioteca de classes .
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
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.
O menu do projeto, clique em Adicionar Referência .
No Add Reference diálogo na guia .NET, selecione System.Web.Extensions clique e OK .
Repita as etapas 2 e 3 para o espaço para nome System.Web System.Web.
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
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
No arquivo
SayHelloWebPart.cs
SayHelloWebPart.cs, copiar e colar o seguinte codificar para substituir o CreateChildControls CreateChildControls métodoprotected 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
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
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()
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
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.