Combobox Silverlight Error 4004

Amb Silverlight 4 el control ComboBox dóna un error particular – no ho he provat amb els altres -. Aquest error no es pot debugar i té el codi 4004 amb l’excepció XamlInvalid. Després de hores i hores trencant-me el cap la conclusió és la següent:

Quan des de codi omplim la propietat ItemsSource del control, si després actualitzem la llista, apareix aquest error.

myComboBox.ItemsSource = <<operació que retorna la llista>>;
(myComboBox.ItemsSource as List<Element>).Add(new Element {nom="nou valor", codi=1});

Aquesta operació pot semblar molt normal però provoca aquest error. El que s’ha de fer és treballar amb la llista abans d’assignar-la a ItemsSource

List<Element> llista = <<operació que retorna la llista>>;
llista.Add(new Element {nom="nou valor", codi=1});
myComboBox.ItemsSource = llista;
Anuncis

LINQ como extensión de método

Ya he hablado de las extensiones de método y ya sabes como se crean. LINQ es una extensión de método de un IEnumerable. Eso significa que dentro de una clase que implemente un IEnumerable existe el método Where, OrdeBy y Select. Estos métodos y otros son extensiones de método que hacen LINQ. Miralo con un ejemplo:

C#
IEnumerable<Customer> customquery =
    from cust in customers
    where (cust.City == “London” && cust.Balance > 500)
    select cust;
Vb.Net
Dim customquery as IEnumerable(Of Customer)
customquery =
    From cust In customers
    Where (cust.City = “London” and cust.Balance > 500)
    Select cust

Es lo mismo que:

C#
IEnumerable<Customer> customquery =
    customers.Where<Customer>(c=>c.City==”London” && c.Balance > 500 ).Select<Customer>(c=>c);
Vb.Net
Dim customquery as IEnumerable(Of Customer)
customquery = customers.Where(Function(c) c.City=”London” and c.Balance > 500).Select(Function(c) c)

Aunque a primera vista parece que todo se complica mucho no lo es, lo único que tienes que entender es que es un FUNC y la expresión Lambda. Después verás que es muy, pero que muy fácil.

En otro post te voy a explicar los FUNC.

Sincronitzar Active Directory amb els perfils de Sharepoint 2010

Ja he parlat en altres entrades del Sharepoint 2010 i continuo pensant que és una eina molt complerta que ofereix moltes funcionalitats i pràcticament totes customitzables.

El Sharepoint i què opino jo com a usuari(I part)

El Sharepoint i què opino jo com a usuari (II part)

La versió Sharepoint Server et dóna la possibilitat de poder crear perfils (anomenats profiles). Els profiles a Sharepoint és un site orientat completament a l’usuari. Als profiles es publica les entrades de l’usuari al blog, els documents que ha creat i modificat als sites de Sharepoint, les etiquetes que ha fet servir, gestió dels seus contactes i tot això que està avui tant de moda que s’anomena el Socail Computing. Per fer-me entendre millor és com un facebook però més pensat per intranets empresarials.

Sharepoint està completament integrat a Active Directory i per tant els usuaris d’AD poden ser usuaris dels sites de Sharepoint. Per tant és normal pensar que tota la informació que hi ha a AD passi als profiles de Sharepoint. Això es fa per sincronització.

Quan estem a la pàgina d’administració del servei d’aplicació de perfils d’usuari

User profiles

tenim la secció Sincronització. Aquesta secció podem crear una connexió de sincronització amb un origen de dades. Aquest origen pot ser Active Directory, Active Directory Logon Data, Active Directory Resource, Business Data Connectivity, ITDS, Novell eDirectory, or Sun Java System Directory Server.

Un cop tenim creada la connexió podem sincronitzar la informació amb les propietats del perfil que hi ha definides al Sharepoint.

És condició necessària que el servei de sincronització estigui corrent.

Tot això és possible només amb instal·lacions de Sharepoint tipus Granja (Farm). Amb una instal·lació Standalone no es pot fer. Per tant és important tenir-ho en compte en el moment de fer la instal·lació inicial. Tot i que he llegit comentaris que aconsellen no instal·lar en cap cas el mode Standalone.