J'ai un petit problème, je crée une page d'édition dans mon application asp.net où l'utilisateur peut modifier les propriétés d'un objet. J'ai deux listes déroulantes (catégorie et groupe) où le nombre de groupes dépend de la catégorie choisie. Mon but est d'afficher la bonne catégorie de l'objet en cours de modification, puis de charger la liste des groupes et de sélectionner le bon groupe. Le problème est que mon événement selectedindexchanged n'est jamais déclenché.Comment puis-je construire mon editform dans asp.net où deux listes déroulantes sont interdépendantes?
Quand je charge mes catégories dans page_load et alimenter les catégories le code ressemble à ceci:
protected void Page_Load(object sender, EventArgs e)
{ string editid= Request["edit"] == null ? null : Request["edit"].ToString();
int id = Convert.ToInt32(editid);
if (link == null)
{
link = BLLink.Load(id, blm);
}
if (!IsPostBack)
{
group = BLGroup.Load(link.GroupId, blm);
category = BLCategory.Load(group.CategoryId, blm);
List<BLCategory> categories = BLCategory.LoadAll();
categoryDropDown.DataSource = categories;
categoryDropDown.DataTextField = "CategoryName";
categoryDropDown.DataValueField = "id";
categoryDropDown.SelectedValue = category.id.ToString(); //this one doesnt cause the event to fire??? Doesnt matter if it is called after the databind() method
categoryDropDown.DataBind();
}
}
theEvent gestionnaire je voudrais exécuter devrait charger tous les groupes et remplir la liste déroulante et sélectionnez le bon:
protected void categoryDropDown_SelectedIndexChanged(object sender, EventArgs e)
{
category = BLCategory.Load(Convert.ToInt32(categoryDropDown.SelectedValue), new TestModelDataContext());
if (category != null)
{
List<BLGroup> groups = BLGroup.LoadAll(category.id);
groupDropDown.DataSource = groups;
groupDropDown.DataTextField = "GroupHeading";
groupDropDown.DataValueField = "GroupId";
groupDropDown.DataBind();
if (group != null)
{
groupDropDown.SelectedValue = group.GroupId.ToString();
}
else
{
groupDropDown.SelectedIndex = 0;
}
}
}
Je ne sais pas ce qui va mal, cela semble être une chose simple à faire, ce que je fais mal?
Pour les petits ensembles de données, je recommanderais l'option 2b. Pour les grands ensembles de données 2a. Je voudrais seulement recourir à l'option 1 rapide et sale si le temps de livrer est plus important que l'expérience de l'utilisateur. Les publications avec ou sans panneaux de mise à jour entraînent souvent une expérience utilisateur léthargique. –