none
Comment étendre l'utilisation d'une DropDownList .. RRS feed

  • Question

  •  

    Bonjour Guillaume,

     

    j'aimerai te demander par rapport à l'utilisation d'une liste déroulante en ASP. Net si son utilisation est extensible ou pas, je m'explique:

     

    sur un formulaire j'ai une simple DropDownList contenant 3 items (Louis, Marc, Alain) liée à une Table sur une BD.

     

    ma question est s'il est possible d'écrire dans cette Liste deroulante en introduisant d'autres nom ne figurant pas parmis ses items exp: jhon, Alex ..

     

    est-ce possible de le faire car je ne trouve pas le moyen ( la liste est figée utilisant seulement ses items ).

     

    s'il y a une astuce, merci de me la montrer

     

    cordialement

     

    Alexy.. 

    lundi 7 avril 2008 15:20

Réponses

  • Bonjour,

    Oui c'est possible. Je suppose que vous utilisez du databinding pour les éléments de la base de données avec une affectation à DataSource et un appel à DataBind.

    Vous avez plusieurs possibilité :

    • Soit vous rajoutez les données dans votre source de données s'il s'agit d'un DataSet après avoir récupéré les données de la base et avant de faire un DataBind.
    • Soit vous ajoutez des items avant le databind via this.myDdl.Items.Add("John"). Il faut dans ce cas mettre la propriété AppendDataBoundItems à true.
    • Soit vous faite votre DataBind puis vous ajoutez les items via this.myDdl.Items.Add("John").
    lundi 7 avril 2008 15:50
  • Salut Guillaume,

     

    là j'utilise une simple une simple requête SQL (INSERT) pour faire passer les donner sur ma table, je ne crois pas aller à utiliser un datasource pour ça, ce que je voudrai tout simplement avoir c'est de pouvoir écrire ces nouveax items si je puis dire vu que je ne les ai pas dans la Ddl, et les écrire directement dedans avant de faire un post pour validation (ecriture dans la BD)

     

    merci à toi

     

    Alexy.. 

     

    lundi 7 avril 2008 16:34
  • Bonjour,

    J'ai du mal à comprendre votre besoin. Voulez vous rajouter une ligne dans votre dropdownlist coté client (en javascript donc) ou coté serveur (en .net) ?

    Après quelle action voulez vous rajouter cette ligne (clic sur un bouton, sortie d'une textbox) ?

    La dropdownlist contient-elle des données au départ (premier affichage de la page) ?

    mardi 8 avril 2008 08:15
  • Bonjour Guillaume,

     

    ce n'est pas très compliqué , je m'explique:

     

    ma Ddl contient disons 04 items dont le premier (index 0) est vide, cependant cette liste n'est pas exostive je veux dire si l'utilisateur ne trouve pas parmis les 03 items qu'il y a ce qu'il cherche, il peut écrire dedans la Ddl ce qu'il veut c'est à dire rendre le comportement de la Ddl comme celui d'une TexBox, puis valider la saisie par un bouton (en prenant en compte la Ddl.selecteditem.Text vu que par défaut le controle Ddl ne permet pas qu'on écrive dedans.

     

    merci

     

    Alexy..  

    mardi 8 avril 2008 09:03
  • Bonjour,

    Si j'ai bien compris vous cherchez à reproduire en ASP.Net le comportement d'une ComboBox Winforms. Malheureusement ce n'est pas simple du tout car il faut beaucoup de javascript. Je vois 2 solutions possible :

    mardi 8 avril 2008 10:29

Toutes les réponses

  • Bonjour,

    Oui c'est possible. Je suppose que vous utilisez du databinding pour les éléments de la base de données avec une affectation à DataSource et un appel à DataBind.

    Vous avez plusieurs possibilité :

    • Soit vous rajoutez les données dans votre source de données s'il s'agit d'un DataSet après avoir récupéré les données de la base et avant de faire un DataBind.
    • Soit vous ajoutez des items avant le databind via this.myDdl.Items.Add("John"). Il faut dans ce cas mettre la propriété AppendDataBoundItems à true.
    • Soit vous faite votre DataBind puis vous ajoutez les items via this.myDdl.Items.Add("John").
    lundi 7 avril 2008 15:50
  • Salut Guillaume,

     

    là j'utilise une simple une simple requête SQL (INSERT) pour faire passer les donner sur ma table, je ne crois pas aller à utiliser un datasource pour ça, ce que je voudrai tout simplement avoir c'est de pouvoir écrire ces nouveax items si je puis dire vu que je ne les ai pas dans la Ddl, et les écrire directement dedans avant de faire un post pour validation (ecriture dans la BD)

     

    merci à toi

     

    Alexy.. 

     

    lundi 7 avril 2008 16:34
  • Bonjour,

    J'ai du mal à comprendre votre besoin. Voulez vous rajouter une ligne dans votre dropdownlist coté client (en javascript donc) ou coté serveur (en .net) ?

    Après quelle action voulez vous rajouter cette ligne (clic sur un bouton, sortie d'une textbox) ?

    La dropdownlist contient-elle des données au départ (premier affichage de la page) ?

    mardi 8 avril 2008 08:15
  • Bonjour Guillaume,

     

    ce n'est pas très compliqué , je m'explique:

     

    ma Ddl contient disons 04 items dont le premier (index 0) est vide, cependant cette liste n'est pas exostive je veux dire si l'utilisateur ne trouve pas parmis les 03 items qu'il y a ce qu'il cherche, il peut écrire dedans la Ddl ce qu'il veut c'est à dire rendre le comportement de la Ddl comme celui d'une TexBox, puis valider la saisie par un bouton (en prenant en compte la Ddl.selecteditem.Text vu que par défaut le controle Ddl ne permet pas qu'on écrive dedans.

     

    merci

     

    Alexy..  

    mardi 8 avril 2008 09:03
  • Bonjour,

    Si j'ai bien compris vous cherchez à reproduire en ASP.Net le comportement d'une ComboBox Winforms. Malheureusement ce n'est pas simple du tout car il faut beaucoup de javascript. Je vois 2 solutions possible :

    mardi 8 avril 2008 10:29
  • Bonjour Guillaume,

     

    merci pour ta réponse, c'était juste une question si c'étaiy faisable ou pas vu que c'est possible come tu l'as dit sur une ComboBox Winforms. 

     

    je te remercie malgré tout pour tes réponses je ne vais pas les laisser de côté je vais quand même y jeter un oeil pour voir ce que je pourrai en tirer.

     

    merci encore Guillaume

     

    Alexy..

    mardi 8 avril 2008 11:16
  •  

    Rebonjour Guillaume,

     

    je te reviens sur ce post juste pour demander s'il est possible d'intégrer de l'ajax dans un projet Web déjà fait auparavant en asp.net ou pas, je m'explique:

     

    sur VS 2005 j'ai configuré et rajouté l'ensemble des objets dont fait part le ControleToolKit D'ajax (une panoplie d'objet), là si je veux engager un site qui prend en charge Ajax par défaut je doit créer à partir du template "ASP.NET AJAX-Enabled Web Site" pour cette partie y a pas de souci vu que j'ai fait des tests et ça fonctionne normalement, par contre si j'ai déjà un site (comme celui que je suis en train de faire) et que j'ai créé à partir d'un template "ASP.NET Web site" là j'ai des erreurs lors de la compilation si j'introduit des composants Ajax dedans.

     

    y a t-il un moyen de rendre Ajax supportable par ce dernier template ou bien dois-je basculer sur le premier et refaire tout le boulot??

     

    merci à toi

     

    Alexy... 

    mardi 29 avril 2008 08:15
  • Bonjour,

    Oui vous pouvez transformer un "ASP.Net Web Site" en "ASP.Net AJAX-ENabled Web Site". Pour cela il faut :

    1. Ajouter une référence à l'assembly System.Web.Extension (v1.0.61025.0) via les la fenêtre des propriétés du site web.
    2. Dans le fichier web.config il faut avoir au minimum les noeuds suivants :

      <configuration>

      <configSections>

      <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">

      <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">

      <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>

      <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">

      <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>

      <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>

      <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>

      </sectionGroup>

      </sectionGroup>

      </sectionGroup>

      </configSections>

      <appSettings/>

      <connectionStrings/>

      <system.web>

      <pages>

      <controls>

      <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

      </controls>

      </pages>

      <compilation debug="false">

      <assemblies>

      <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

      </assemblies>

      </compilation>

      <httpHandlers>

      <remove verb="*" path="*.asmx"/>

      <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

      <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

      <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>

      </httpHandlers>

      <httpModules>

      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

      </httpModules>

      </system.web>

      <system.web.extensions>

      <scripting>

      <webServices>

      <!-- Uncomment this line to customize maxJsonLength and add a custom converter -->

      <!--

      <jsonSerialization maxJsonLength="500">

      <converters>

      <add name="ConvertMe" type="Acme.SubAcme.ConvertMeTypeConverter"/>

      </converters>

      </jsonSerialization>

      -->

      <!-- Uncomment this line to enable the authentication service. Include requireSSL="true" if appropriate. -->

      <!--

      <authenticationService enabled="true" requireSSL = "true|false"/>

      -->

      <!-- Uncomment these lines to enable the profile service. To allow profile properties to be retrieved

      and modified in ASP.NET AJAX applications, you need to add each property name to the readAccessProperties and

      writeAccessProperties attributes. -->

      <!--

      <profileService enabled="true"

      readAccessProperties="propertyname1,propertyname2"

      writeAccessProperties="propertyname1,propertyname2" />

      -->

      </webServices>

      <!--

      <scriptResourceHandler enableCompression="true" enableCaching="true" />

      -->

      </scripting>

      </system.web.extensions>

      <system.webServer>

      <validation validateIntegratedModeConfiguration="false"/>

      <modules>

      <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

      </modules>

      <handlers>

      <remove name="WebServiceHandlerFactory-Integrated"/>

      <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

      <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

      <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

      </handlers>

      </system.webServer>

      </configuration>

    3. Dans votre page aspx il faut ajouter un controle ScriptManager

    mardi 29 avril 2008 12:40
  • Merci Guillaume pour ton retour,

     

    justement j'avais déjà effectué le 1er ainsi que le 3ème point, par contre le 2ème non.

     

    je le ferai alors

     

    merci encore

     

    Alexy..

    mardi 29 avril 2008 15:31