web-dev-qa-db-fra.com

valeur de la liste déroulante dans asp.net

Je souhaite ajouter une valeur à la liste déroulante qui ne peut pas être sélectionnée, par exemple un titre . Ex: j'ai une liste déroulante mensuelle. Le tout premier élément devrait être "sélectionner le mois" mais ne devrait pas être sélectionné. Et ensuite, de janvier à décembre. Comment puis je faire ça?

Et c'est mon code actuel.

string selectmonth = "select * from tblmonth";
SqlCommand scmselect = new SqlCommand(selectmonth, scnbuboy);

SqlDataReader sdrselect = scmselect.ExecuteReader();

drmonth.DataTextField = "month";
drmonth.DataValueField = "monthID";
drmonth.DataSource = sdrselect;

drmonth.DataBind();
6
wormwood
<asp:DropDownList ID="DdlMonths" runat="server">
    <asp:ListItem Enabled="true" Text="Select Month" Value="-1"></asp:ListItem>
    <asp:ListItem Text="January" Value="1"></asp:ListItem>
    <asp:ListItem Text="February" Value="2"></asp:ListItem>
    ....
    <asp:ListItem Text="December" Value="12"></asp:ListItem>
</asp:DropDownList>

Vous pouvez même utiliser une RequiredFieldValidator qui ignore cet élément, il le considère comme non sélectionné.

<asp:RequiredFieldValidator ID="ReqMonth" runat="server" ControlToValidate="DdlMonths"
    InitialValue="-1">
</asp:RequiredFieldValidator>
13
Rango

Vous pouvez ajouter une valeur vide telle que:

ddlmonths.Items.Insert(0, new ListItem("Select Month", ""))

Et ajoutez simplement une validation pour éviter de choisir une option vide telle que asp:RequiredFieldValidator.

3
7alhashmi

Ce sont TOUTES les bonnes réponses si vous voulez travailler aussi dur. Mais je suppose que vous avez déjà les éléments souhaités pour la liste provenant d'un élément databound et que vous souhaitez uniquement ajouter en haut de cette liste le "Hé, mec, choisissez-en un!" option. En supposant que ce soit le cas ...

Voici la réponse facile. Et ça marche TOUJOURS ...

  1. Faites votre liste de données comme vous l'aviez prévu. 
  2. ALORS, dans Visual Studio, éditez les éléments du menu déroulant, 
  3. Ajoutez UN ARTICLE MANUEL, faites-en votre choix " Sélectionnez un élément ", 
  4. A l'aide de la fenêtre de propriétés de l'élément dans VS2012, cochez la case sélectionnée. Maintenant, ferme cette fenêtre.
  5. Maintenant, allez dans la zone de propriétés de Visual Studio en bas à gauche (assurez-vous que la liste déroulante est sélectionnée) et recherchez la propriété "AppendDataBoundItems". 
  6. Il va lire False, définissez ceci sur True.

Vous obtiendrez maintenant un menu déroulant avec toutes vos données, précédé de votre déclaration "Sélectionner un article" dans l’article manuel. Essayez de lui donner une valeur par défaut si possible, cela éliminera toutes les erreurs que vous pourriez rencontrer. La valeur par défaut est zéro. Par conséquent, si zéro n'est pas un problème, laissez-le ainsi. Si zéro IS est un problème, remplacez le zéro par défaut dans l'élément par quelque chose qui ne plantera PAS votre code.

Et arrêtez de travailler si durement… C’est à cela que sert Visual Studio.

1
Todd R. Hill

essaye celui-là

    <asp:DropDownList ID="ddList" runat="server">
    <asp:ListItem Value="">--Select Month--</asp:ListItem>
    <asp:ListItem Value="1">January</asp:ListItem>
    <asp:ListItem Value="2">Feburary</asp:ListItem>
    ...
    <asp:ListItem Value="12">December</asp:ListItem>
    </asp:DropDownList>

La valeur doit être vide pour l'élément de liste sélectionné par défaut, alors cela fonctionne correctement 

1
Asim

Code VB:

Dim ListItem1 As New ListItem()
ListItem1.Text = "put anything here"
ListItem1.Value = "0"
drpTag.DataBind()
drpTag.Items.Insert(0, ListItem1)

Vue:

<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="CompareValidator" ControlToValidate="drpTag" 
  ValueToCompare="0">
</asp:CompareValidator>
0
JoshYates1980

Tu peux essayer ça

your_ddl_id.Items.Insert(0,new ListItem("Select","");
0
Subhash Jakhar

Pour ajouter des éléments à la liste déroulante avec une valeur dans asp.net en utilisant c #, ajoutez simplement les codes ci-dessous, par exemple:

try
{
    SqlConnection conn = new SqlConnection(conStr);
    SqlCommand comm = conn.CreateCommand();
    comm = conn.CreateCommand();
    comm.CommandText = "SELECT title,gid from Groups";
    comm.CommandType = CommandType.Text;
    conn.Open();
    SqlDataReader dr = comm.ExecuteReader();
    while (dr.Read())
    {
       dropDownList.Items.Add(new 
       ListItem(dr[0].ToString(),dr[1].ToString()));
    }
}
catch (Exception e)
{
    lblText.Text = e.Message;
}
finally
{
  conn.Close();
}
0
moslem razyani

Supposons que vous ayez une liste déroulante appelée ddlMonths:

ddlMonths.Items.Insert(0,new ListItem("Select a month","-1");
0
Dimitar Dimitrov

De manière simple, ce n'est pas possible. Parce que DropdownList contient ListItem et il sera sélectionné par défaut 

Mais vous pouvez utiliser ValidationControl pour cela:

<asp:RequiredFieldValidator InitialValue="-1" ID="Req_ID" Display="Dynamic" 
ValidationGroup="g1" runat="server" ControlToValidate="ControlID"
Text="*" ErrorMessage="ErrorMessage"></asp:RequiredFieldValidator>
0
Arshad