Realizando SELECT no SQL Server + SharePoint Solution

Opá que post é esse, isso não é nada aconselhável… Muitos devem estar falando isso, mas isso necessidade surgiu desse post aqui -> Problemas com a proc_ListUrls. Da uma lidinha nele vocês entenderam o problema que tive, e um problema da biblioteca Microsoft.SharePoint, ela funciona perfeitamente para uma Library ou List que possua poucos itens, mas no meus caso eram cerca 1,5 mi, só tive problemas e dor de cabeça, dai então realizei querys diretamente no banco, e ainda tive que criar novos índices, pois os criados não estavam performando nada, lógico que tive a ajuda de um DBA, pois não são especialista em SQL Server.

Mas vamos lá, você ao tentar criar um ConnectionString em um projeto SharePoint, pode ser um Projeto App, ou uma Solution, terá problemas ao tentar se conectar a base de dados do SharePoint.

Mas usando o método que criei isso não será o problema.

Da uma olhadinha:

public static SqlDataReader SelectTo(SqlConnection connection)
        {
            SqlDataReader reader = null;
            SPSecurity.RunWithElevatedPrivileges(delegate ()
            {
                using (SPSite ElevatedsiteColl = new SPSite(SPContext.Current.Web.Url))
                {
                    using (SPWeb ElevatedSite = ElevatedsiteColl.OpenWeb())
                    {
                        try
                        {
                          
                            connection.Open();
                            SqlCommand cmdSelect = new SqlCommand(procGetItens, connection);
                            cmdSelect.CommandType = CommandType.StoredProcedure;
                            reader = cmdSelect.ExecuteReader();
                        }
                        catch (Exception ex)
                        {
                            reader = null;
                        }
                    }
                }
            });
            return reader;
        }

Realizando queries diretamente na base de dados consegui performar muito minha solução, antes o tempo para retorna uma busca era de 48 seg. com essa customização reduzi para 2 seg. é um ganho considerável.

Esse feature já esta no ar e o feedback dos usuários esta sendo muito positivo.

Abraços! Achei justo compartilhar esse case com vocês.

SPFx – SharePoint Framework by GSD

Olá amigos,

Hoje vou falar um pouco da teoria do SPFx,  já foi divulgado pela Microsoft aqui no Brasil já tem uns 4 meses, mas só nessa última semana consegui criar alguns exemplos e estudar um pouco a respeito desse novo conceito, posts futuros já terão exemplos SPFx, podem acreditar, pois esta muito animador além de incentivar a aprender novas tecnologia .

Mas vamos falar um pouco do que é o SPFx, pessoal vou falar da minha visão e experiência que tive com essa novidade, o conceito não é muito inovador, pois no SharePoint Online já usávamos JS injetado na página e  SharePoint Add-in.

Para quem não mexeu ainda com SharePoint Online e também não tenha case dessa duas modalidades que citei acima vou falar brevemente um pouco de cada uma:

Adicionando Script no SP

É muito popular no SP Online a parte Web de editor de scripts que permite que colemos o código na página, o mesmo é executado quando a página é processada. É simples assim, chegar até ser rudimentar…Rs Convém lembrar que funciona muito bem. Ele é executado no mesmo contexto de navegador da página e está no mesmo DOM.

Modelo Add-in

É uma opção para sites NoScript, a para este tipo de site também usamos App-in. Esse modelo cria um _iFrame_where, ai que mora a desvantagem é difícil criar projetos responsivos e sei que é bem mais lento(experiência própria), mas não vou entrar nesse detalhe. Não poderia deixar de citar uma vantagem como é externa ao sistema e não tem acesso à  DOM / conexão, é mais fácil confiar e implementar.

SPFx 

Dei uma visão geral do atual cenário, agora vou falar da minha visão e o que o SPFx oferece para nós desenvolvedores.

O SharePoint Framework tenta construir  um sistema robusto de desenvolvimento em cima do SP local e SP On-line.

Segundo a idea inicial do SPFx ele se torna muito indicado, levantei alguns pontos consideráveis :

  • Ele é executado no contexto do usuário atual e conexão no navegador, e não em iFrames.
  • Os controles são processados no DOM de página normal.
  • Os controles são responsivos e acessíveis por natureza.
  • Há um ciclo de vida em que o desenvolvedor está envolvido.
    • Não é apenas renderizar , mas carregar , serializar _e _deserializar , alterações de configuração , etc.
  • A cadeia de ferramentas baseia-se em ferramentas comuns de desenvolvimento de cliente de código aberto, como npm, TypeScript, yeoman, webpack, gulp, etc.
  • Pode ser implantado em páginas web clássicas e de publicação, bem como nas páginas modernas.

Viram no penúltimo bullet apareceu algumas linguagem talvez não muito naturais para quem desenvolve em C# e Visual Studio.

Como disse que o SPFx se baseia em ferramentas de código aberto, esta uma boa oportunidade para desenvolver novas habilidades, acho que para desenvolvedores C#, typeScript é muito mais familiar, pelo menos no meu caso foi isso assim.

O modelo de dados não mudou absolutamente nada por isso elenco que TypeScript será uma transição quase nada traumática. Gente o REST continua a ser usado da mesma maneira também, se voce é acostumado a usar JSOM pode continuar usando, isso foi um exemplo para elucidar que nada alterou nesta parte também.

Não entrei em muitos detalhes pois o SPFx esta na primeira versão ainda, então falei um pouco da minha visão, espero ter ajudado neste ponto.

Que IDE usar ?

Como já esta envolvendo Open Source(Código Aberto) a escolha do IDE fica a critério do desenvolvedor, eu uso o VS Code, mas tem muitas opções.

Galera, acho que de uma maneira sucinta consegui exclarecer um pouco do SPFx SharePoint Framework. 

Customizando Web Part Properties

Olá Developer, este post explica  como customizar as propriedades da Web Part, antes de mais nada vou expressar de uma forma bem didática em qual classe essa customização acontece. Lembrando que este post é direcionado para quem sabe criar uma Web Part simples.

projectProperties

Agora veja como é fácil customizar as propriedades, vou citar 5 exemplo Boleano, Texto, Número, Data e ComboBox.

projectProperties1

A seguir colocarei o código que usei dentro da classe para obter este resultado.

// Visual Studio might automatically update this path when you change the Visual Web Part project item.
private const string _ascxPath = @"~/_CONTROLTEMPLATES/15/GSD.Viewer.PDF/WebPartViewerPDF/WebPartViewerPDF.ascx";

protected override void CreateChildControls()
{
Control control = Page.LoadControl(_ascxPath);
Controls.Add(control);
}

public static Boolean GSDBoolean;
[Category("Customizando Propriedades GSD"),
Personalizable(PersonalizationScope.Shared),
WebBrowsable(true),
WebDisplayName("Boleano"),
WebDescription("Exemplo Boleano")]
public Boolean _GSDBoolean
{
get { return GSDBoolean; }
set { GSDBoolean = value; }
}

public static string GSDText;
[Category("Customizando Propriedades GSD"),
Personalizable(PersonalizationScope.Shared),
WebBrowsable(true),
WebDisplayName("Texto"),
WebDescription("Exemplo Texto")]
public string _GSDText
{
get { return GSDText; }
set
{
//Validação
Regex oRegEx = new Regex("[a-zA-Z]+");
if (!oRegEx.IsMatch(value))
throw new Microsoft.SharePoint.WebPartPages.
WebPartPageUserException(
"Por favor entre com caracteres alfabéticos");
GSDText = value;
}
}

public static int GSDNumber;
[Category("Customizando Propriedades GSD"),
Personalizable(PersonalizationScope.Shared),
WebBrowsable(true),
WebDisplayName("Número"),
WebDescription("Exemplo Número")]
public int _GSDNumber
{
get { return GSDNumber; }
set { GSDNumber = value; }
}

public static DateTime GSDDate;
[Category("Customizando Propriedades GSD"),
Personalizable(PersonalizationScope.Shared),
WebBrowsable(true),
WebDisplayName("Data"),
WebDescription("Exemplo Data")]
public DateTime _GSDDate
{
get { return GSDDate; }
set { GSDDate = value; }
}

public enum CityEnum { Itajubá_MG, Salvador_BA, Pedralva_MG, São_Paulo_SP };
public static CityEnum GSDDropDown;
[Category("Customizando Propriedades GSD"),
Personalizable(PersonalizationScope.Shared),
WebBrowsable(true),
WebDisplayName("ComboBox"),
WebDescription("Exemplo ComboBox")]
public CityEnum _GSDDropDown
{
get { return GSDDropDown; }
set { GSDDropDown = value; }
}

Para concluirmos, vou mostrar como podemos usar os parâmetros definidos ns propriedades da web part, veja a imagem abaixo:

projectProperties2

Essa estrutura eu aproveitei de um post anterior, e achei interessante explanar esse assunto, espero ter ajudado e elucidado qualquer dúvida.

Abraço, Developer!

WebPart – Viewer PDF

Galera, criei uma WebPart que renderiza um .pdf, vou disponibilizar a Solution.

Vocês posdem baixar e fazer bom uso, vou apenas explicar algumas coisas, na propriedade da WP voce pode definir o tamanho e largura da exibição e também definir a url do arquivo, ou simplesmente usar  QueryString.

Definindo url do arquivo:

notqs

Usando QueryString 

withqs

Simples assim, veja o resultado abaixo:

viewpdf

Segue o link para download da Solution (WSP):

GSD_Viewer

Caso alguém deseje o fonte, pode solicitar 🙂

project

Abraços, até o próximo.

Adicionar, Instalar, Ativar, Desinstalar e Desativar uma Feature usando PowerShell – SharePoint 2013

Fala galera hoje vou divulgar alguns comandos bem uteis no que diz respeito a instalar e remover uma Solution -> WSP no SharePoint, visto que a Microsoft tem como objetivo descontinuar essa extensão no futuro, muita gente fala isso, eu acredito que não, mas concordo que as APPs são o futuro, na verdade já é uma realidade.

Usei como base o site da TechNet, uso bastante esses comandos alguns de tanto usar até já decorei, mas segue abaixo os mesmo para auxiliar vocês nas atividades diárias.

Adicionando

Add-SPSolution -LiteralPath c:\seuWSP.wsp

Instalando

Install-SPFeature -path "SuaFeature"  -CompatibilityLevel 15

Ativando

Enable-SPFeature -identity "SuaFeature" -URL http://seusite

Desabilitando

Disable-SPFeature -identity "SuaFeature" -URL http://seusite

Desinstalando

Uninstall-SPFeature -Identity "SuaFeature" -CompatibilityLevel 15

Isso ai galera espero ter ajudado, mas os créditos são todos do TechNet, abixo segue o link onde caso haja alguma duvida podem consultar os parâmetros e explicações caso possua.

créditos : PowerShell TechNet