Mostrarei aqui como desenvolver web parts para o SharePoint
2010 através do Visual Studio 2010 que comuniquem entre si, ou seja, enviem e
recebam informações de umas para as outras que estão contidas na mesma página.
Começaremos criando um novo projeto “Empty SharePoint
Project”, escolha “Deploy as a farm solution”.
Vamos agora criar a interface quem iremos utilizar para
definir os valores que iremos enviar e receber.
Aqui vamos criar uma interface básica com uma simples
string.
public
interface IWPInterface02
{string Text { get; set; }
}
Com a interface criada, vamos agora adicionar duas Web Parts
ao projeto (botão direito no projeto -> Add - > New item -> Web Part):
Obs.: Neste exemplo
não estou utilizando “Visual Web Part”.
-WPConsumer: Web
part que irá receber o valor e exibir através de um TextBox.
-WPProvider: Web
part que irá enviar um texto digitado em um TextBox e será enviado ao clique de
um Button.
Com as duas web parts devidamente criadas, vamos agora
adicionar o código necessário para realização da funcionalidade.
No arquivo .cs da WPProvider adicionamos o seguinte código:
//Devemos adicionar a interface
"IWPInterface02" pois faremos a implementação dela abaixo
[ToolboxItemAttribute(false)]public class WPProvider : WebPart, IWPInterface02
{
//Declaração dos controles utilizados
private Label lbl;private TextBox txt;
private Button btn;
public String _text = String.Empty;
//Implementação de get e set
[Personalizable()]public string Text
{
get
{
return _text;
}
set
{
_text = value;
}
}
{
//Criação dos controles na web part
Controls.Clear();
lbl = new
Label();
lbl.ID = "lbl";lbl.Text = "Digite um texto:";
Controls.Add(lbl);
txt.ID = "txt";
txt.Text = "";
Controls.Add(txt);
Controls.Add(new
LiteralControl("<br>"));
btn = new
Button();
btn.ID = "btn";btn.Text = "Enviar texto";
btn.Click += new EventHandler(Button1_Click);
Controls.Add(btn);
}
//Conexão
[ConnectionProvider("Provider for String From TextBox", "TextBoxStringProvider")]public IWPInterface02 TextBoxStringProvider()
{
return this;
}
void Button1_Click(object sender, EventArgs e)
{
if
(txt.Text != String.Empty)
{Text = txt.Text;
txt.Text = String.Empty;
}
}
}
Agora vamos adicionar o código abaixo no arquivo .cs da
WPConsumer.
[ToolboxItemAttribute(false)]
public
class WPConsumer
: WebPart{
private IWPInterface02 provider02;
//Declaração do controle
private TextBox txt;protected override void CreateChildControls()
{
//Criação dos controles na web part
Controls.Clear();
txt = new TextBox();
txt.ID = "txtConsumer";
txt.Text = "";
Controls.Add(txt);
}
//Conexão
[ConnectionConsumer("String Consumer", "StringConsumer")]public void TextBoxStringConsumer(IWPInterface02 Provider)
{
provider02 = Provider;
}
protected override void
OnPreRender(EventArgs e)
{EnsureChildControls();
if (provider02 != null)
{
//Atribui o valor presente no provider para o TextBoxtxt.Text = provider02.Text;
}
}
}
Os códigos acima adicionados estão todos comentados a
respeito da funcionalidade de cada bloco.
Agora basta realizar o deploy através do próprio
Visual Studio 2010 e adicionar as duas web parts em uma mesma página e ver o
resultado.
Nenhum comentário:
Postar um comentário