Israel Aéce

Microsoft MVP, MCP, MCAD, MCTS, MCPD e MCT

My Links

Blog Stats

Archives

Post Categories

Links

Login

Parâmetro customizado em controles DataSource

Há algum tempo eu falei aqui sobre controles Data Sources (ObjectDataSource, SqlDataSource, etc.). Esses controles possuem tipos de parametros pré-definidos, como é o caso do CookieParameter, ControlParameter, SessionParameter, etc..

Só que há situações em que precisamos customizar tais tipos de parametros, ou melhor, extrair a informação de um local em que os parametros pré-definidos não nos ajudam. Para este cenário, podemos criar um parametro customizado, herdando da classe base Parameter, como é mostrado abaixo:

public class UserNameParameter : Parameter
{
    public UserNameParameter() { }

    //outras implementações//membros

    protected override object Evaluate(HttpContext context, Control control)
    {
        if (context == null || !context.User.Identity.IsAuthenticated)
            return null;

        return context.User.Identity.Name;
    }
}

Com esse controle criado, podemos utilizá-lo no interior de um controle ObjectDataSource, como podemos visualizar no trecho de código abaixo:

<%@ Register TagPrefix="ia" Assembly="ClassLibrary1" Namespace="ClassLibrary1" %>

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
    SelectMethod="RecuperarUsuarios" TypeName="ColecaoDeUsuarios">
    <SelectParameters>
        <ia:UserNameParameter Name="nome" />
    </SelectParameters>
</asp:ObjectDataSource>

//Classe ColecaoDeUsuarios:

public List<Usuario> RecuperarUsuarios(string nome) { }

É importante lembrar que o atributo Name é herdado da classe Parameter e voce deverá definí-lo com o nome do parametro especificado no método RecuperarUsuarios (método de Select). Para finalizar, voce não precisa se restringir as propriedades existentes na classe Parameter; voce pode estar criando as tuas próprias propriedades (se preocupando em guardar as informações no ViewState) e permitindo que o usuário (outro desenvolvedor) atributo valor para ela durante a configuração do controle Data Source.

posted on Friday, March 28, 2008 6:39 PM

Feedback

No comments posted yet
Title  
Name  
Url
Box Code
Protected by FormShield
Comments