Je suis un nouveau développeur ASP.NET et j'essaie d'apprendre Linq-To-Entities. J'essaie de lier une DropDownList avec l'instruction Linq pour récupérer la liste des statuts dans l'entité d'état. Tout fonctionne bien. Cependant, j'essaie maintenant d'ajouter l'option "Sélectionner" à la DropDownList mais cela ne fonctionne pas avec moi. Pourriez-vous s'il vous plaît me dire comment résoudre ce problème?
Code ASP.NET:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
Code-Behind:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DropDownList1.Items.Add(new ListItem("Select", "0", true));
bindStatusDropDownList();
}
}
private void bindStatusDropDownList()
{
Status status = new Status();
DropDownList1.DataSource = status.getData();
DropDownList1.DataValueField = "ID";
DropDownList1.DataTextField = "Description";
DropDownList1.DataBind();
}
METTRE À JOUR:
J'ai également essayé de faire dans le jeu de balisage de la DropDownList mais cela n'a pas fonctionné trop avec moi
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Selected="True" Value="0" Text="Select"></asp:ListItem>
</asp:DropDownList>
Cela ne fonctionne pas parce que vous ajoutez un élément à la liste, puis que vous remplacez toute la liste par une nouvelle variable DataSource
qui effacera et remplira à nouveau votre liste, perdant ainsi le premier élément ajouté manuellement.
Donc, vous devez faire ceci à l’inverse comme ceci:
Status status = new Status();
DropDownList1.DataSource = status.getData();
DropDownList1.DataValueField = "ID";
DropDownList1.DataTextField = "Description";
DropDownList1.DataBind();
// Then add your first item
DropDownList1.Items.Insert(0, "Select");
Bien que la question soit assez ancienne, une autre approche consiste à modifier la propriété AppendDataBoundItems . Donc le code sera:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"
AppendDataBoundItems="True">
<asp:ListItem Selected="True" Value="0" Text="Select"></asp:ListItem>
</asp:DropDownList>
J'ai essayé avec le code suivant. ça marche bien pour moi
ManageOrder Order = new ManageOrder();
Organization.DataSource = Order.getAllOrganization(Session["userID"].ToString());
Organization.DataValueField = "OrganisationID";
Organization.DataTextField = "OrganisationName";
Organization.DataBind();
Organization.Items.Insert(0, new ListItem("Select Organisation", "0"));
Private Sub YourWebPage_PreRenderComplete(sender As Object, e As EventArgs) Handles Me.PreRenderComplete
If Not IsPostBack Then
DropDownList1.Items.Insert(0, "Select")
End If
End Sub
Déplacer DropDownList1.Items.Add (new ListItem ("Select", "0", true));
alors:
if (!IsPostBack)
{
bindStatusDropDownList(); //first create structure
DropDownList1.Items.Add(new ListItem("Select", "0", true)); // after add item
}
Si vous faites un "Ajouter", il l'ajoutera au bas de la liste. Vous devez faire un "Insérer" si vous voulez que l'élément soit ajouté en haut de la liste.