<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Le bloc de Ginetteguy</title>
	<atom:link href="https://blog.developpez.com/ginetteguy/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/ginetteguy</link>
	<description></description>
	<lastBuildDate>Sun, 24 Jul 2011 14:42:56 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Binder un ContentControl sur un TreeView</title>
		<link>https://blog.developpez.com/ginetteguy/p10150/developpement-windows/binder_un_contentcontrol_sur_un_treeview</link>
		<comments>https://blog.developpez.com/ginetteguy/p10150/developpement-windows/binder_un_contentcontrol_sur_un_treeview#comments</comments>
		<pubDate>Sun, 24 Jul 2011 14:42:56 +0000</pubDate>
		<dc:creator><![CDATA[Ginetteguy]]></dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Developpement Windows]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ca fait longtemps que j&#8217;ai pas fait d&#8217;article, alors aujourd&#8217;hui petit article sur la façon de binder un ContentControl sur un TreeView. Le but de cet article est d&#8217;élaborer un TreeView contenant des employés, ceux ci étant ordonné selon la hiérarchie de l&#8217;entreprise. using System.Collections.Generic; &#160; namespace TreeViewTest { &#160; &#160; public class Employe &#160; &#160; { &#160; &#160; &#160; &#160; public Employe(string nom,string prenom,Employe chef) &#160; &#160; &#160; &#160; { &#160; &#160; &#160; &#160; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Ca fait longtemps que j&rsquo;ai pas fait d&rsquo;article, alors aujourd&rsquo;hui petit article sur la façon de binder un ContentControl sur un TreeView.</p>
<p>Le but de cet article est d&rsquo;élaborer un TreeView contenant des employés, ceux ci étant ordonné selon la hiérarchie de l&rsquo;entreprise. </p>
<p><span id="more-2"></span></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">using System.Collections.Generic; <br />
&nbsp;<br />
namespace TreeViewTest <br />
{ <br />
&nbsp; &nbsp; public class Employe <br />
&nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; public Employe(string nom,string prenom,Employe chef) <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _nom = nom; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _prenom = prenom; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _chef = chef; <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; private string _nom; <br />
&nbsp; &nbsp; &nbsp; &nbsp; public string Nom <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return _nom; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _nom = value; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; private string _prenom; <br />
&nbsp; &nbsp; &nbsp; &nbsp; public string Prenom <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return _prenom; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _prenom = value; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; private Employe _chef; <br />
&nbsp; &nbsp; &nbsp; &nbsp; public Employe Chef <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return _chef; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _chef = value; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; private List&lt;Employe&gt; _subAlterne; <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; public List&lt;Employe&gt; SubAlterne <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (_subAlterne == null) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _subAlterne = new List&lt;Employe&gt;(); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return _subAlterne; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _subAlterne = value; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; } <br />
}</div></div>
<p>Ensuite au niveau du code behind de notre MainWindow, affectation des employés.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">using System.Collections.Generic; <br />
using System.Windows; <br />
&nbsp;<br />
namespace TreeViewTest <br />
{ <br />
&nbsp; &nbsp; /// &lt;summary&gt; <br />
&nbsp; &nbsp; /// Logique d'interaction pour MainWindow.xaml <br />
&nbsp; &nbsp; /// &lt;/summary&gt; <br />
&nbsp; &nbsp; public partial class MainWindow : Window <br />
&nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; public static List&lt;Employe&gt; RacineEmploye = new List&lt;Employe&gt;(); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; public MainWindow() <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; InitializeComponent(); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Entité racine <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Employe Racine = new Employe(&quot;Dupont&quot;,&quot;Michel&quot;,null); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Entités SubAlterne <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Employe Sub = new Employe(&quot;Durand&quot;,&quot;Henri&quot;,Racine); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Employe Sub1 = new Employe(&quot;Toto&quot;,&quot;Toto&quot;,Racine); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Entités SubSubAlterne <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Employe SubSub = new Employe(&quot;Titi&quot;,&quot;Titi&quot;,Sub1); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Employe SubSub1 = new Employe(&quot;Tata&quot;,&quot;Tata&quot;,Sub1); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Ajout des SubSubAlterne dans la liste <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Sub1.SubAlterne.Add(SubSub); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Sub1.SubAlterne.Add(SubSub1); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Ajout dans la liste racine <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Racine.SubAlterne.Add(Sub); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Racine.SubAlterne.Add(Sub1); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RacineEmploye.Add(Racine); <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; } <br />
}</div></div>
<p>Enfin définition du xaml pour afficher correctement tout ceci. Pour le treeView, on effectue le binding sur la liste principale.<br />
Puis utilisation de la propriété HierarchicalDataTemplate en définissant l&rsquo;itemsSource sur la liste des SubAlterne.<br />
Enfin pour afficher le détail d&rsquo;un employé, utilisation d&rsquo;un ContentControl qui se binde sur le SelectedItem du TreeView.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;Window x:Class=&quot;TreeViewTest.MainWindow&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; xmlns:local=&quot;clr-namespace:TreeViewTest&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; Title=&quot;MainWindow&quot; Height=&quot;350&quot; Width=&quot;525&quot;&gt; <br />
&nbsp; &nbsp; &lt;Grid&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;Grid.ColumnDefinitions&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;ColumnDefinition Width=&quot;*&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;ColumnDefinition Width=&quot;*&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/Grid.ColumnDefinitions&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;TreeView x:Name=&quot;xTreeViewEmploye&quot; ItemsSource=&quot;{x:Static local:MainWindow.RacineEmploye}&quot; Grid.Column=&quot;0&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;TreeView.ItemTemplate&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;HierarchicalDataTemplate ItemsSource=&quot;{Binding Path=SubAlterne}&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;TextBlock FontWeight=&quot;Bold&quot; &nbsp;Text=&quot;{Binding Path=Nom}&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/HierarchicalDataTemplate&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/TreeView.ItemTemplate&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/TreeView&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;ContentControl Content=&quot;{Binding ElementName=xTreeViewEmploye, Path=SelectedItem}&quot; Grid.Column=&quot;1&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;ContentControl.Resources&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;DataTemplate DataType=&quot;{x:Type local:Employe}&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;StackPanel&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;StackPanel Orientation=&quot;Horizontal&quot; Height=&quot;25&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;TextBlock Text=&quot;Nom&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;TextBox Text=&quot;{Binding Path=Nom}&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/StackPanel&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;StackPanel Orientation=&quot;Horizontal&quot; Height=&quot;25&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;TextBlock Text=&quot;Prenom&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;TextBox Text=&quot;{Binding Path=Prenom}&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/StackPanel&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;StackPanel Orientation=&quot;Horizontal&quot; Height=&quot;25&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;TextBlock Text=&quot;Chef&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;TextBox Text=&quot;{Binding Path=Chef.Nom}&quot;/&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/StackPanel&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/StackPanel&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/DataTemplate&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/ContentControl.Resources&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/ContentControl&gt; <br />
&nbsp; &nbsp; &lt;/Grid&gt; <br />
&lt;/Window&gt;</div></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilisation du StringBuilder</title>
		<link>https://blog.developpez.com/ginetteguy/p9908/developpement-windows/utilisation_du_stringbuilder</link>
		<comments>https://blog.developpez.com/ginetteguy/p9908/developpement-windows/utilisation_du_stringbuilder#comments</comments>
		<pubDate>Tue, 19 Apr 2011 22:00:27 +0000</pubDate>
		<dc:creator><![CDATA[Ginetteguy]]></dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Developpement Windows]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Présentation du StringBuilder : La classe StringBuilder est hérité de System.Text, elle permet de manipuler des chaines de caractères. Contrairement à un objet String, l&#8217;objet StringBuilder gère une mémoire tampon, ce qui lui confère de meilleures performances que l&#8217;objet String qui lui crée un nouvel objet à chaque traitement. Le StringBuilder peut notamment être utile lors de construction de requêtes SQL dépendant de certains paramètres. Utilisation du StringBuilder : Cet objet est utilisé lors de [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong><u>Présentation du StringBuilder :</u></strong></p>
<p>La classe StringBuilder est hérité de System.Text, elle permet de manipuler des chaines de caractères. Contrairement à un objet String, l&rsquo;objet StringBuilder gère une mémoire tampon, ce qui lui confère de meilleures performances que l&rsquo;objet String qui lui crée un nouvel objet à chaque traitement.</p>
<p>Le StringBuilder peut notamment être utile lors de construction de requêtes SQL dépendant de certains paramètres.<br />
<span id="more-3"></span><br />
<strong><u>Utilisation du StringBuilder :</u></strong></p>
<p>Cet objet est utilisé lors de concaténation de chaînes, il possède une partie des méthodes de la classe String, dont notamment :</p>
<p>Append(): Permet de rajouter à la suite de la chaîne du StringBuilder ce qui est en paramètre. Cette méthode est composé de 19 surcharges possibles contenant différents types de paramètres.</p>
<p>AppendFormat() : Permet de rajouter à la suite de la chaîne du StringBuilder un ou plusieurs des paramètres.</p>
<p>Clear() : Permet de supprimer le contenu du StringBuilder</p>
<p>Insert() : Permet d&rsquo;insérer à la position désirée dans le StringBuilder ce qui est en paramètre. Pour ajouter au tout début du StringBuilder, il faut insérer à la position 0, car les positions d&rsquo;index commencent à 0.</p>
<p>Remove(): Permet de supprimer un caractère ou une chaîne de caractères présentes dans le StringBuilder</p>
<p>Replace(): Permet de remplacer un caractère ou une chaîne de caractères spécifiés dans les paramètres par une autre valeur.</p>
<p>ToString(): Permet de convertir le StringBuilder en String, utile pour un affichage.</p>
<p><strong><u>Exemple d&rsquo;utilisation du StringBuilder :</u></strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">using System.Text; <br />
&nbsp;<br />
public static StringBuilder RecupereListeClient(String nom, String prenom, String telephone) <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; StringBuilder sb = new StringBuilder(); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sb.Append(&quot;SELECT * FROM CLIENTS &quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!String.IsNullOrEmpty(nom) || !String.IsNullOrEmpty(prenom) || !String.IsNullOrEmpty(telephone)) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sb.Append(&quot;WHERE &quot;); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!String.IsNullOrEmpty(nom)) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sb.AppendFormat(&quot;nomClient={0} &quot;, nom); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!String.IsNullOrEmpty(prenom)) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!String.IsNullOrEmpty(nom)) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sb.Append(&quot;AND &quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sb.AppendFormat(&quot;prenomClient={0} &quot;, prenom); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!String.IsNullOrEmpty(telephone)) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!String.IsNullOrEmpty(nom) || !String.IsNullOrEmpty(prenom)) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sb.Append(&quot;AND &quot;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sb.AppendFormat(&quot;telephoneClient={0}&quot;, telephone); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return sb; <br />
&nbsp; &nbsp; &nbsp; &nbsp; }</div></div>
<p>Ici, on a utilisé le StringBuilder afin de construire une requête SQL de sélection d&rsquo;un client en fonction de son nom et/ou prénom et/ou téléphone. Ainsi on vérifie si chacun de ses paramètres n&rsquo;est pas null ou vide et en fonction de ceci, le StringBuilder est completé dans la clause Where.</p>
<p>On voit donc bien l&rsquo;intérêt d&rsquo;un StringBuilder, construction dynamique de requêtes SQL, meilleures performances que l&rsquo;objet String.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presentation</title>
		<link>https://blog.developpez.com/ginetteguy/p9907/developpement-windows/presentation_8</link>
		<comments>https://blog.developpez.com/ginetteguy/p9907/developpement-windows/presentation_8#comments</comments>
		<pubDate>Tue, 19 Apr 2011 21:47:48 +0000</pubDate>
		<dc:creator><![CDATA[Ginetteguy]]></dc:creator>
				<category><![CDATA[Developpement Windows]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Bonjour à toutes et à tous, Je vais commencer par une petite présentation avant d&#8217;attaquer les choses sérieuses :p Je suis (tout jeune) développeur C#/WPF pour un éditeur de logiciel français, mon projet est orienté gestion. A travers ce blog, je compte écrire quelques articles techniques concernant le C#, WPF, le T-SQL, Merise, UML et peut être quelques billets sur mes développements personnels orientés Java. J&#8217;espère que ces billets pourront vous être utile, en tout [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Bonjour à toutes et à tous,</p>
<p>Je vais commencer par une petite présentation avant d&rsquo;attaquer les choses sérieuses :p</p>
<p>Je suis (tout jeune) développeur C#/WPF pour un éditeur de logiciel français, mon projet est orienté gestion.<br />
A travers ce blog, je compte écrire quelques articles techniques concernant le C#, WPF, le T-SQL, Merise, UML et peut être quelques billets sur mes développements personnels orientés Java.<br />
J&rsquo;espère que ces billets pourront vous être utile, en tout cas n&rsquo;hésitez pas à venir échanger.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
