2017-07-18 7 views
0

Je travaille avec ASP.NET. J'ai une liste déroulante qui est construite dynamiquement. Maintenant, lorsque vous cliquez sur un bouton de soumission, j'essaie de faire quelque chose uniquement lorsque vous avez sélectionné quelque chose dans la liste déroulante (avec 'if value is not 0'). Mais d'une manière ou d'une autre ma valeur donne toujours 0 (la valeur par défaut) en arrière, aussi quand quelque chose est sélectionné et la valeur devrait être 1 ou 2.La valeur sélectionnée dans DropDownList renvoie toujours la valeur par défaut également lorsque quelque chose d'autre est sélectionné

Quelqu'un ici qui sait quel pourrait être le problème?

Ici, je suis en boucle sur toutes mes DROPDOWNLIST et chaque DROPDOWNLIST il arrive un emailinput (les 2 appartiennent ensemble)

  For i As Integer = 0 To allDropDownLists.Count - 1 
       If allDropDownLists(i).SelectedValue = "0" Then 
       Else 
        If allEmailInputs(i).Text IsNot "" Then 
         final &= saveEventUser(myID, allDropDownLists(i).SelectedValue, allEmailInputs(i).Text) 
        Else 
         error.InnerHtml = "error!!" 
        End If 
       End If 
      Next 

Et voilà comment tout se construit dynamiquement:

  Dim div71 As New Panel 
      div71.CssClass = "border" 
      Dim ddl As New DropDownList 
      ddl.ID = "select" & panel & "_" & counter 
      ddl.Items.Clear() 
      ddl.Items.Add(New ListItem("Select something", "0")) 
      ddl.Items.Add(New ListItem("Select 1", "1")) 
      ddl.Items.Add(New ListItem("Select 2", "2")) 
      ddl.CssClass = "form_txt2 colegas" 
+0

Vous ne pouvez pas générer un « runat = « server » » le contrôle, car ils sont généralement pré-traitées à incorporer dans le fichier .designer.vb –

+0

D'accord, je l'ai supprimé, je l'ai juste mis là parce que je lisais en ligne que cela aurait pu être le problème, mais il était clairement pas –

+0

Où est-ce pour la boucle en cours d'exécution? Pouvez-vous fournir la définition ou le type de ce qui suit: 'allDropDownLists()', 'allEmailInputs()', 'final' et 'saveEventUser()'. – MaCron

Répondre

0

Créez votre liste déroulante de la manière ASP.NET standard avec visibile = "false", puis lorsque vous la remplissez, définissez sa visibilité sur true.

<asp:DropDownList ID="ddl" runat="server" visible="false" CssClass="form_txt2 colegas"></asp:DropDownList> 

ddl.Items.Clear() 
ddl.Items.Add(New ListItem("Select something", "0")) 
ddl.Items.Add(New ListItem("Select 1", "1")) 
ddl.Items.Add(New ListItem("Select 2", "2")) 
ddl.Visible = true 

Sinon, vous pourriez construire un GridView dans lequel vous avez un DropDownList pour chaque ligne, de sorte que vous pouvez contrôler le nombre de lignes (d'où -> DropDownLists) pour afficher - si vous liez cette GridView à un ensemble de données avec 5 dossiers , vous aurez 5 DropDownLists.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="BatchID" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"> 
    <Columns> 
     <asp:BoundField DataField="Column1" HeaderText="Column1" SortExpression="Column1" /> 
     <asp:BoundField DataField="Column2" HeaderText="Column2" SortExpression="Column2" /> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:DropDownList ID="DropDownList1" runat="server"> 
       </asp:DropDownList> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

Vous peupleront ces DropDownLists sur l'événement GridView RowDataBound

+0

Ce n'est pas une option. Il doit être dynamiquement construit car il choisit aussi combien de Dropdowns il doit montrer. Parce que ces listes déroulantes seront montrées sous événement et le fabricant de l'événement peut choisir combien de listes déroulantes doivent être. Parce qu'à la fin, les listes déroulantes seront utilisées pour vous inscrire aux événements. –