terça-feira, 5 de julho de 2011

C# - Split usando mais de um delimitador

Fala galera,

Segue mais uma dica para quem, como eu, migrou do VB.Net para o C# e se deparou com algumas mudanças em funções bastante rotineiras como o SPLIT.

No VB.Net o uso desta função é bem mais simplificado. Algo como: Split("string","@@")

No C# não é bem assim. Segue o código:
string teste = "String1@@String2";
string[] arrList = teste.Split(new char[] {'@', '@'}, StringSplitOptions.RemoveEmptyEntries);

Atenção para o texto em negrito. Pois ao fazer o split de uma string utilizando mais de um delimitador são gerados inúmeras posições em branco no seu array.
Ao utilizar a opção "RemoveEmptyEntries" todas essas posições em branco serão automaticamente removidas do array.

Um abraço e até a próxima!!

quinta-feira, 6 de janeiro de 2011

LINQ to SQL - Ordenando Dados Randomicamente

Fala, galera!!

Depois de alguns meses sem postar, estou voltando com uma postagem relâmpago, mas bastante útil.
Hoje vou mostrar como ordenar randomicamente uma lista utilizando o LINQ e expressão lambda.

Antes do LINQ, a ordenação era feita via SQL utilizando "Order by NewID".

Segue o código para a ordenação randomica no LINQ:

dim db as DataContext()
dim rnd as random = new random()
db.Tabela.OrderBy(function(obj)  rnd.Next).tolist()

Simples assim.

Um abraço e até a próxima!!

terça-feira, 5 de outubro de 2010

Herança no Web.Config - Resolvendo problema de conflito

Fala, galera!!

Segue mais uma dica valiosa que irá poupar tempo de muita gente.

Durante o processo de migração me deparei com um conflito no web.config que ainda não sei se é uma característica do Framework 4.0 ou do IIS 7.

Meu cenário é o seguinte:
Minha solution possui um Web Application referente ao Front-End cujo Framework é o 4.0 e um outro Web Application referente à área de administração cujo Framework é o 3.5. Motivo: Estou utilizando o Asp.Net Dynamic Data para a administração e a nova versão do mesmo não possui o Dynamic Data Filtering implementado. Desta forma, para adicionar novos filtros dinamicamente eu teria que codificar meus próprios templates de filtro. Como outra pessoa já fez isso para a primeira versão do A.D.D, decidi manter esta versão que me atende plenamente.

Prosseguindo...
Meu IIS possui um website principal e um aplicação "filha" que é a área de administração.
Ao fazer o deploy para produção passou a ocorrer um conflito de versões.
Aparentemente, minha aplicação 3.5 estava herdando o web.config da aplicação 4.0.

Perdi um bom tempo tentando entender, mas achei a solução. Bem simples, por sinal.

Basta adicionar a seguinte linha no web.config, logo acima da tag <system.web>:

<location path="." inheritInChildApplications="false">

No meu caso, o web.config ficou mais ou menos assim:


<location path="." inheritInChildApplications="false">
<system.web>
<compilation debug="false" strict="false" explicit="true" targetFramework="4.0">
                        ...
               </system.web>
</location>

Todo código incluído na tag <location> não será herdado pelas aplicações "filhas".
No meu caso, a linha que continha a tag <compilation> estava gerando o conflito.

Um abraço e até a próxima!!

Url Amigável - Migrando do Framework 3.5 para o 4.0

Fala, galera!!

Esta semana migrei minha primeira aplicação do framework 3.5 para o 4.0.
O motivo: Suporte nativo à URL Amigável.

Tudo funcionou perfeitamente em meu ambiente de desenvolvimento.
A surpresa foi quando fiz o deploy da aplicação para o servidor de produção: Todas as URL's amigáveis pararam de funcionar!

Após uma rápida pesquisa, consegui a solução.
Basta adicionar o código abaixo no seu arquivo web.config, logo após a seção <ConfigSections>:

<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

OBS: Quem criar um novo projeto já no framework 4.0 não deverá passar por esse problema.

Um abraço e até a próxima!!

quinta-feira, 30 de setembro de 2010

Asp.Net Dynamic Data - Ordenando dados do GridView

Fala, galera!!

Hoje irei mostrar como ordenar os dados de um gridview utilizado pelo Asp.Net Dynamic Data.

A primeira coisa a ser feita é definir no seu arquivo de MetaDados qual campo será utilizado como critério de ordenação e qual será o critério: Ascending ou Descending.

O código em negrito é o que deve ser adicionado no arquivo de Metadados.


<MetadataType(GetType(PROJETO_Metadata))> _
       <DisplayColumn("NomeProjeto", "NomeProjeto", False)> _
    Partial Public Class PROJETO

No código acima, minha grid será ordenada pelo nome do projeto em ordem crescente (Ascending).

Agora vamos adicionar o código que fará a ordenação da GridView:

No arquivo List.aspx, basta adicionar o seguinte no código no evento Page_Load:



 If Not Page.IsPostBack Then
            Dim Ordem As String = IIf(table.SortDescending = True, "Descending", "Ascending")
            Dim orderBy As String = String.Format("{0} {1}", table.DisplayColumn.SortExpression, Ordem)
            GridDataSource.OrderBy = orderBy
End If


Um abraço e até a próxima!!

sexta-feira, 24 de setembro de 2010

Update Progress & Update Panel Trigger

Fala, galera!!

Segue a solução para quem, como eu, enfrentou problemas ao colocar o Update Progress para funcionar com um update Panel cuja atualização é disparada através de uma trigger.

<asp:ScriptManager ID="ScriptManager1" runat="server" />

 <script type="text/javascript">
        var prm = Sys.WebForms.PageRequestManager.getInstance();

        prm.add_initializeRequest(InitializeRequest);
        prm.add_endRequest(EndRequest);

        var postBackElement;

        function InitializeRequest(sender, args) {

            if (prm.get_isInAsyncPostBack())

                args.set_cancel(true);

            $get('ctl00_ContentPlaceHolder1_upProgresso').style.display = 'block';

        }

        function EndRequest(sender, args) {
                $get('ctl00_ContentPlaceHolder1_upProgresso').style.display = 'none';
        }
    </script>

O script deve ser adicionado logo após o controle ScriptManager. Caso contrário, ocorrerá um erro no javascript: "Sys is not defined"

Um abraço e até a próxima!!

terça-feira, 21 de setembro de 2010

Exportando dados para o Excel

Fala, galera!!

Fiquei meio ausente. O tempo anda escasso.
Portanto, farei um post relâmpago para quem precisa, como eu precisei, exportar dados de um gridview para uma planilha excel.

Ai vai...


Private Sub ExportarParaExcel()
        Dim util As New util
        Dim tw As New StringWriter()
        Dim hw As New System.Web.UI.HtmlTextWriter(tw)
        Dim frm As HtmlForm = New HtmlForm()
        Response.ContentType = "application/vnd.ms-excel"
        Response.AddHeader("content-disposition", "attachment;filename=Planilha.xls")
        Response.Charset = ""
        EnableViewState = False

        Controls.Add(frm)
        frm.Controls.Add(grdDados) 'Aqui você informa o seu controle GridView
        frm.RenderControl(hw)
        Response.Write(tw.ToString())
        Response.End()

    End Sub

Bem simples e bem útil.

Um abraço e até a próxima!!