by Stiven
11. março 2010 11:08
Estou trabalhando em um projeto onde tem uma analista de testes fantástica, não deixa passar nada. E um dos items do checklist era colocar um contador de caracteres e um limitador para o tamanho do texto no HTMLEditor do AjaxControltoolkit. Deu um pouquinho de trabalho. Umas das dificuldades é que o HTMLEditor usa iFrames, mas nada que o jQuery não resolva.
Uma vez com o código fonte do AjaxControltoolkit, criei uma uma versão mais lite do HTMLEditor, chamando de LiteHTMLEditor.
Adicionei a propriedade MaxLength:
[DefaultValue(0)]
[Themeable(false)]
public virtual int MaxLength { get; set; }
Sobrescrevi o método RenderEndTag:
base.RenderEndTag(writer);
if (MaxLength > 0)
{
string clientID = string.Format("{0}_ctl02_ctl01", ClientID);
writer.Write("<i>(Caracteres restantes: <span id=\"" + ClientID + "_info\">" + MaxLength + "</span>)</i>");
Page.ClientScript.RegisterStartupScript(GetType(), string.Format("LiteHTMLEditor_{0}", ClientID), ScriptLiteHTMLEditor(), true);
}
Bom, é isso aí!
LiteHTMLEditor.rar (490.56 kb)
;)
by Stiven
9. março 2010 11:14
Esta semana precisei desenvolver um componente que implementasse a funcionalidade que ao usuário clicar no botão para submeter o formulário, se o mesmo tivesse campos obrigatórios (usando por exemplo o RequiredFieldValidator), teria que mostrar uma mensagem informando que ainda existiam campos a serem preenchidos.
Bom, é algo bem simples. Mas se tratando interação com o usuário é bastante útil.
Usei o jQuery para mostrar a div. E a grande sacada ta no método Page.ClientScript.RegisterOnSubmitStatement, que é nele que vamos conseguir executar a chamada da mensagem quando o usuário tentar submeter página.
Código fonte do projeto.
AlertRequiredFields.rar (26.91 kb)
;)
by Stiven
27. outubro 2009 05:13
Depois de ler o artigo Gerenciando a experiência do usuário no AJAX, resolvi desenvolver um componente que fizesse todo esse trabalho sujo de criar os scripts, images, css, etc.. na página e que fosse algo realmente fácil de implementar.
A ideia é que a página da Web permaneça ativa (porém desabilitada) mesmo depois que o usuário tiver efetuado uma solicitação AJAX, conforme a imagem abaixo:
Para funcionar basta inserir o trecho de codigo abaixo no arquivo .aspx:
<orea:AjaxUpdating ID="ajaxUpdating" runat="server" Text="Atualizando informações..." />
Simples?
;)
Código fonte:
Orea.WebControls.AjaxUpdating.zip (493,44 kb)
by Stiven
3. outubro 2009 07:47
Sei que já é bem batido, mas mesmo assim muitas pessoas me perguntam como fazer algo dinâmico para acessar um determinado control dentro de uma hierarquia vários controls. E uma boa dica é usar uma função recursiva.
public static System.Web.UI.Control FindControlRecursive(System.Web.UI.Control root, string id)
{
if (root.ID == id)
{
return root;
}
foreach (System.Web.UI.Control c in root.Controls)
{
System.Web.UI.Control t = FindControlRecursive(c, id);
if (t != null)
{
return t;
}
}
return null;
}
Ao invês de usarmos:
Page.FindControl("control1").FindControl("control2");
usamos:
FindControlRecursive(Page, "control2");
;)
by Stiven
2. novembro 2008 03:53