quarta-feira, 30 de outubro de 2013

Ajaxtoolkit - cannot read property '_notified' of null

Fala, galera!!

Hoje me deparei com a seguinte mensagem de erro ao utilizar um AutocompleteExtender dentro de um updatepanel associado a um updateprogress: "Cannot read property '_notified' of null".

 O mais estranho é que o erro só acontece no Google Chrome. Após uma breve pesquisa, descobri que o erro trata-se de um problema no código de detecção do browser do arquivo MicrosoftAjax.js que não detecta o webkit.

 O webkit é um mecanismo de renderização de páginas utilizado por browsers como o Google Chrome e Safari.

Para contornar esse problema basta incluir o código abaixo na sua página aspx:
 <script type="text/javascript">

Sys.Browser.WebKit = {};
if (navigator.userAgent.indexOf('WebKit/') > -1) {
    Sys.Browser.agent = Sys.Browser.WebKit;
    Sys.Browser.version = parseFloat(navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]);
    Sys.Browser.name = 'WebKit';
 }

</script>

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

sábado, 10 de agosto de 2013

Desabilitando itens no dropdownlist

Fala galera,

Após muito tempo de inatividade no blog, segue mais um compartilhamento de código.
Durante essa semana me deparei com a necessidade de categorizar os itens dentro de um dropdownlist.

Algo mais ou menos assim:

Categoria 1
--- item 1.1
--- item 1.2
--- item 1.3
Categoria 2
--- item 2.1
--- item 2.2
--- item 2.3

Acontece que os itens "categoria 1" e "categoria 2" são apenas informativos e não podem ser selecionáveis.
Para isso, é preciso desabilitar a opção de seleção desses itens.

Definir o atributo "enabled" no server-side como false não soluciona o problema. É preciso trabalhar com os atributos no lado do cliente.

Segue então o código para desabilitar o item no dropdown:

System.Web.UI.WebControls.ListItem item = ddl.Items.FindByValue("[valor]");
if (item != null)
{
   item.Attributes.Add("style""color:gray;");
   item.Attributes.Add("disabled""true");
}

Onde [valor] corresponde ao valor que identifica o item(propriedade value) que deve ser desabilitado.



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