RadioButtonList horizontale et Bootstrap

Vous utilisez Bootstrap 3.0 avec ASP.NET Webforms et vous voulez obtenir ce résultat 
 
Alors rien de plus simple, voici un style à mettre dans votre bootstrap-override.css bien préparé :

1
2
3
4
5
6
7
8
9
10
11
12
span.radio {
    padding: 0px;
}
 
    span.radio > input[type="radio"] {
        margin: 0;
    }
 
    span.radio > label {
        float: left;
        margin-right: 10px;
    }

Puis :

1
2
3
4
5
<asp:RadioButtonList runat="server" RepeatDirection="Horizontal" CssClass="radio" RepeatLayout="Flow">
     <asp:ListItem Text="Oui" />
     <asp:ListItem Text="Non" />
     <asp:ListItem Text="Tous" />
</asp:RadioButtonList>

Et voilà !

DbUp, gérer les migrations de votre database simplement

J’ai découvert un petit Framework très utile pour gérer les différentes migrations de votre database. Le principe est simple, il tiens un journal des scripts déjà passés pour savoir lesquels il doit exécuter.

À savoir que dans sa présentation, il met en avant les scripts SQL mais en regardant d’un peu plus près vous pouvez mélanger des scripts « code » grâce à la classe WithScriptsAndCodeEmbeddedInAssembly.

Vous pouvez le découvrir ici : http://dbup.github.com/ et mon fork qui corrige un petit problème de format de date pour les serveurs Fr : https://github.com/vbouzon/DbUp

Voilà, have fun.

Obtics ou comment gérer de facon dynamique ses objets métiers….

N’importe quel développeur SL/WPF à l’habitude de gérer les évènements PropertyChanged, CollectionChanged et ça devient vite très chiant dans certains cas. Je vais vous présenter une libraire appelée Obtics, mais attention je vous avertis, on en tombe vite accroc.

Un cas simple, vous avez une ObservableCollection d’objet métier que vous voulez encapsuler dans un ensemble de ViewModel.

1
2
3
4
5
6
7
8
9
10
11
public class MainViewModel: ViewModelBase
{
        private readonly ObservableCollection<BusinessObject> _collection;
 
        public MainViewModel(ObservableCollection<BusinessObject> collection)
        {
            _collection = collection;
        }
 
        public IEnumerable<BusinessObjectViewModel> Entities { get; set; }
}

En temps normal, vous vous abonneriez à l’évènement CollectionChanged de l’ObservableCollection et vous gériez la fameuse routine des NotifyCollectionChangedAction.

Mais là, Obtics (comme toujours ?) va vous simplifier la vie, voici comment faire avec Obtics :

1
2
3
4
5
6
7
8
9
10
public MainViewModel(ObservableCollection<BusinessObject> collection)
{
    _collection = collection;
 
    IValueProvider<IEnumerable<BusinessObjectViewModel>> valueProvider = ExpressionObserver.Execute(
    () => _collection.Select(bo => new BusinessObjectViewModel(bo)));
 
 
    this.Entities = valueProvider.Cascade();
}

Obtics va « Compiler » votre LambdaExpression en pipeline de création d’un objet qui va automatiquement s’abonner aux évènements nécessaires pour tenir toujours à jour la valeur fournit par le IValueProvider fournit.

Dans le cas de IValueProvider<IEnumerable<T>>, il est possible de « merger » les évènements de changement de valeur de l’IEnumerable<T> pour obtenir un IEnumerable<T>.

En gros, si la propriété Value de valueProvider change alors la collection obtenue par Cascade(), va faire un NotifyCollectionChangedAction.Add, NotifyCollectionChangedAction.Remove de la différence ou un NotifyCollectionChangedAction.Reset.

 

Pour aller plus loin, imaginons que vous voulez filtrer sur vos objets qui ont la propriété « Name » commençant par « Vin », il suffit de faire :

ExpressionObserver.Execute(() => this._collection.Where(bo => bo.Name.StartsWith("Vin")).Select(bo => new BusinessObjectViewModel(bo))).Cascade();

Sympa non ?

Il y a beaucoup de principes à comprendre dans cette libraire avant de l’exploiter au maximum, j’attends vos retours pour continuer de blogger dessus…

En bref… VSTO, Gestion des tableaux croisés dynamiques

VSTO, Gestion des tableaux croisés dynamiques

Cela fait plusieurs mois que je travaille avec les VSTO de Microsoft qui permettent de manipuler les outils Office en .NET. Je vais vous présenter aujourd’hui deux petites astuces sur la manipulation des tableaux croisés dynamiques (PivotTable) sous Excel qui vous seront utiles si un jour vous avez l’occasion de travailler avec les VSTO.
Continue la lecture

Comportement étrange dans le toolkit Windows Phone 7

Cela fait un petit moment que je n’ai pas posté, mais je me sentais obligé après avoir découvert un comportement étrange pendant un développement WP7…

Mon ami Applien me parle toujours de la fluidité du scroll des ListBoxs sur iPhone, il faut le reconnaitre c’est fluide !

Je développais une application pour ce fameux Applien et je me suis rendu compte que ma ListBox n’était pas si fluide que ça… J’avais déjà fait mieux sur WP7… Je suis parti à la recherche du pourquoi.

Continue la lecture