IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Insertion valeur Null requete insertion et bind non autorisé


Sujet :

ASP.NET

  1. #1
    Membre actif Avatar de maxeur
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    416
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 416
    Points : 267
    Points
    267
    Par défaut Insertion valeur Null requete insertion et bind non autorisé
    Bonjour à tous,

    Je rencontre des difficultés sur le développement d'une application en ASP.

    J'ai créé une list view qui récupère des données et sur laquelle j'ai mis en place le modification et l'insertion.

    J'ai voulu remplacer les champs texte par des dropdownlist mais malheureusement ceux-ci me bloquent en insertion.

    Ces deux dropdownlist récupèrent des valeurs à partir de deux autres requêtes et la seconde se base sur la résultat de la première pour sélectionner ses valeurs.

    L'affichage des valeurs se fait correctement. Par contre j'ai l'impression que le selected value conserve sa valeur initiale

    Lors de l'insertion j'ai une erreur me disant impossible d'insérer des valeurs NULL (et je ne souhaite pas insérer des valeurs null dans ma base) pour le champ IdComposantDommage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     <asp:TextBox ID="IDJournal" runat="server"></asp:TextBox>
          <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:SAV IMERIRConnectionString %>" 
                DeleteCommand="DELETE from Incidents where Incidents.id = @IdIncident" 
                InsertCommand="INSERT INTO INCIDENTS (IdAffaire, Principal, Commentaires, IdComposantDommage) VALUES (@IDJournal,  @Principal, @Commentaires, @IdComposantDommage)"
                SelectCommand="SELECT Incidents.Id as IdIncident, Composant.Designation as Composant, Composant.Id as IdComposant,Dommage.Id as IdDommage, Dommage.Description as Dommage,ComposantDommage.id as IdComposantDommage, Incidents.Principal, Incidents.Commentaires FROM Incidents,ComposantDommage,Composant, Dommage Where Dommage.Id = ComposantDommage.Id AND Incidents.IdComposantDommage = ComposantDommage.Id AND ComposantDommage.IdComposant = Composant.Id AND Incidents.IdAffaire = @IDJournal order by Principal DESC" 
                UpdateCommand="UPDATE Incidents SET IdComposantDommage = @IdComposantDommage, Principal = @Principal, Commentaires =@Commentaires where Id = @IdIncident">
            <InsertParameters>
                <asp:ControlParameter ControlID="IDJournal" Name="IDJournal" Type="Int32" /> 
                <asp:Parameter Name="Principal" />
                <asp:Parameter Name="Commentaires" />
                 <asp:ControlParameter ControlID="ListView1" Name="IdComposantDommage" PropertyName="SelectedDataKey[1]"
                    Type="Int32" />
            </InsertParameters>
            </asp:SqlDataSource>
             <asp:SqlDataSource ID="Composants" runat="server" 
                ConnectionString="<%$ ConnectionStrings:SAV IMERIRConnectionString %>" 
                SelectCommand="SELECT Id as IdComposant, Designation as IntituleComposant FROM Composant UNION SELECT NULL, NULL" 
                ProviderName="<%$ ConnectionStrings:SAV IMERIRConnectionString.ProviderName %>">
            </asp:SqlDataSource>
          <asp:ListView ID="ListView1" runat="server" ConvertEmptyStringToNull="False" 
                DataKeyNames="IdIncident,IdComposantDommage"
                DataSourceID="SqlDataSource1" InsertItemPosition="LastItem">
                <InsertItemTemplate>
                <asp:SqlDataSource ID="DommageComposants" runat="server" 
                ConnectionString="<%$ ConnectionStrings:SAV IMERIRConnectionString %>" 
                SelectCommand="SELECT Dommage.Description as IntituleDommage, Dommage.Id as IdDommage, ComposantDommage.Id as IdComposantDommage FROM [dbo].[Dommage] INNER JOIN ComposantDommage ON ComposantDommage.IdDommage = Dommage.Id  Where ComposantDommage.IdComposant = @Composant UNION SELECT null, 0, 0">
                <SelectParameters>
                    <asp:ControlParameter ControlID="Composant" Name="Composant" 
                    PropertyName="SelectedValue" />
                </SelectParameters>
            </asp:SqlDataSource>
                    <tr style="">
                        <td>
                            <asp:ImageButton ID="CancelButton" runat="server" CommandName="Cancel" 
                                ImageUrl="~/Images/s_cancel.png" width="12px" Height="12px"/>&nbsp;
                                <asp:ImageButton ID="InsertButton" runat="server" CommandName="Insert" 
                                ImageUrl="~/Images/s_success.png" width="12px" Height="12px"/>
                        </td>
                        <td>
                             <asp:Label ID="IdIncidentLabel" runat="server" /></td>
                        <td>
                            <asp:DropDownList ID="Composant" runat="server" 
                                DataSourceID="Composants" DataTextField="IntituleComposant" 
                                DataValueField="IdComposant"
                                Width="100%" AutoPostBack="True">
                            </asp:DropDownList>
                        </td>
                        <td>
                            <asp:DropDownList ID="IdComposantDommage" runat="server" 
                                DataSourceID="DommageComposants" DataTextField="IntituleDommage" 
                                DataValueField="IdComposantDommage" AutoPostBack="True"
                                Width="100%">
                            </asp:DropDownList>
                        </td>
                        <td>
                            <asp:CheckBox ID="PrincipalCheckBox" runat="server" 
                                Checked='<%# Bind("Principal") %>' />
                        </td>
                        <td>
                            <asp:TextBox ID="CommentairesTextBox" runat="server" 
                                Text='<%# Bind("Commentaires") %>' />
                        </td>
                    </tr>
                </InsertItemTemplate>
            </asp:ListView>
    Merci d'avance pour vos réponses

  2. #2
    Membre actif Avatar de maxeur
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    416
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 416
    Points : 267
    Points
    267
    Par défaut
    J'ai sorti mes deux dropdownlist de mon listview et j'ai essayé de mettre un évènement sur selectindexchanged et textchanged et ces deurx actions ne sont pas lancées

    Est ce que quelqu'un aurait une idée de là où celà peut venir
    Cela fonctionne maintenant aprés avoir mis dans ma balise page Comme vous avez pu le voir j'ai une première SQLDataSource qui remplie mon listview, une seconde qui remplie mon DDL COmposant et une dernière qui se situe dans mon insertTemplate et EditTemplate afin de remplir ma seconde DDL en fonction de la première.

    Mon SQLData Source récupère tous les champs sauf celui associé à cette dropdownlist.

    J'ai esayé via ASp:parameter en définissant directement le nom du champ et via via ASp:COntrolparameter en utilisant le datakeyNames

    Ce qui est bizzare aussi c'est que je n'arrive pa à faire un Bind sur ces DDL en mode Insert

    Personne n'a une petite idée de la où ça peut venir je n'arrive vraiment à déboguer

    Ce n'est pas le même SQLDataSource pour ces données alors est ce que cela vientde là ??

    Comment je peux faire pour récupérer les selectedvalue (est ce que cela peut venir de là)

    Merci d'avance pour vos réponses

  3. #3
    Membre actif Avatar de maxeur
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    416
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 416
    Points : 267
    Points
    267
    Par défaut
    Bonjour à tous,

    Finalement, je n'ai pas réussi à corriger le problème mais j'ai trouvé un moyen de la contourner.

    A la place d'avoir de DropDownlist, je n'en crée plus qu'une seule avec où ma requete est la jointure des deux requêtes précédentes et sur laquelle je concatène le résultat que je souhaite afficher ce qui mer permet d'avoir mes valeurs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] insertion valeur null dans base de données
    Par L.A.. dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 19/06/2015, 17h21
  2. Formview envois des valeur null à l'insertion
    Par ftpcrazy dans le forum ASP.NET
    Réponses: 3
    Dernier message: 26/10/2009, 11h43
  3. Insertion valeur non de valeur NULL dans 'INSERT INTO'
    Par jacopasto dans le forum Développement
    Réponses: 4
    Dernier message: 25/11/2008, 23h09
  4. [SQL] Insertion valeur NULL de php vers SQL
    Par tkwleboss dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/11/2007, 13h21
  5. insertion valeur null en tant qu'administrateur
    Par new_wave dans le forum SQL
    Réponses: 3
    Dernier message: 06/11/2007, 11h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo