Ich habe ein kleines Problem, ich erstelle eine Bearbeitungsseite in meiner asp.net-Anwendung, wo der Benutzer Eigenschaften in einem Objekt bearbeiten kann. Ich habe zwei Dropdown-Listen (Kategorie und Gruppe), in denen die Anzahl der Gruppen von der gewählten Kategorie abhängt. Mein Ziel ist es, die richtige Kategorie und das zu bearbeitende Objekt anzuzeigen, dann die Liste der Gruppen zu laden und die richtige Gruppe auszuwählen - das Problem ist, dass mein ausgewählter Indexwechsel nie ausgelöst wird.Wie baue ich mein Bearbeitungsformular in asp.net, wo zwei Dropdowns voneinander abhängig sind?
Wenn ich meine Kategorien in page_load laden und die Kategorien füllen Sie den Code wie folgt aussieht: ich möchte ausführen sollten alle Gruppen laden und die Drop-Down-bevölkern und
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 Handler wählen Sie die richtige:
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;
}
}
}
ich weiß nicht, was falsch läuft, das ist wie eine einfache Sache scheint zu tun, was mache ich falsch?
Für kleine Datensätze würde ich Option 2b empfehlen. Für große Datensätze 2a. Ich würde nur auf die schnelle und schmutzige Option 1 zurückgreifen, wenn die Lieferzeit wichtiger ist als die Benutzererfahrung. Postbacks mit oder ohne Update-Panels führen oft zu einer langsamen Benutzererfahrung. –