SanjiMedlem sedan juli 2009355 inlägg Hej, jag har stött på ännu ett problem, eventet nedan vill inte köras.
Är det någon vänlig själ som skulle kunna hjälpa mig med detta? vad kan vara problemet?
DropDownList inquiryarticlelist = new DropDownList();
foreach (Article a in ArticlesDatabase.Articles.GetArticlesByCompanyID(currentUser.CompanyID))
{
inquiryarticlelist.Items.Add(new ListItem(a.Term, a.ID.ToString()));
}
inquiryarticlelist.AutoPostBack = true;
inquiryarticlelist.SelectedIndexChanged += new EventHandler(inquiryarticlelist_SelectedIndexChanged);
/Sanji
När körs den där koden? Sparas kontrollen i viewstate?
SanjiMedlem sedan juli 2009355 inlägg Hur kollar jag om den sparas i viewstate? jag har en till dropdownlist med ett selectedindexchanged-event, men det fungerar som det ska. Dock är den dropdownlisten inte genererad dynamiskt, utan finns i aspx-filen från början.
När jag har gjort ett val i min första, statiska dropdownlist så fylls värden i i den/de dynamiska, men då jag ska ändra i den nya så händer ingenting.
AutoPostBack är påslaget så det är inte det som är problemet. Jag ger dropdownlistan ett ID, så det är heller inte problemet.
Det är i denna metod som den dynamiska listan skapas:
protected void Dropdownlistinquiries_SelectedIndexChanged(object sender, EventArgs e)
{
int articledropdownID = 0;
User currentUser = (User)Session["user"];
if (Dropdownlistinquiries.SelectedIndex != 0)
{
Inquiry tempInquiry = InquiryarticlesDatabase.Inquiries.GetInquiry(int.Parse(Dropdownlistinquiries.Items[Dropdownlistinquiries.SelectedIndex].Value));
foreach (InquiryArticle ia in tempInquiry.Articles)
{
TableCell articlenrcell = new TableCell();
TableCell pcs_cell = new TableCell();
TableCell suborder = new TableCell();
TableCell termcell = new TableCell();
TableCell revnr = new TableCell();
TableRow articlerow = new TableRow();
DropDownList inquiryarticlelist = new DropDownList();
foreach (Article a in ArticlesDatabase.Articles.GetArticlesByCompanyID(currentUser.CompanyID))
{
inquiryarticlelist.Items.Add(new ListItem(a.Term, a.ID.ToString()) { Selected=(ia.Article.ID == a.ID)});
}
inquiryarticlelist.ID = articledropdownID.ToString();
inquiryarticlelist.AutoPostBack = true;
inquiryarticlelist.SelectedIndexChanged += new EventHandler(inquiryarticlelist_SelectedIndexChanged);
articlenrcell.Controls.Add(inquiryarticlelist);
pcs_cell.Text = ia.Pieces.ToString();
suborder.Text = ia.SubOrder.ToString();
termcell.Text = ia.Article.Term;
revnr.Text = ia.RevisionNumber;
articlerow.Cells.Add(articlenrcell);
articlerow.Cells.Add(pcs_cell);
articlerow.Cells.Add(suborder);
articlerow.Cells.Add(termcell);
articlerow.Cells.Add(revnr);
InquiryTableArticles.Rows.Add(articlerow);
articledropdownID++;
}
Dropdownlistinquiries.SelectedIndex = Dropdownlistinquiries.SelectedIndex;
}
}
denna för att testa att eventet körs:
protected void inquiryarticlelist_SelectedIndexChanged(object sender, EventArgs e)
{
Form.InnerHtml = sender.ToString();
Form.InnerHtml += "<br />" + (sender is DropDownList).ToString();
}
Jag ser inte vad som är fel... Hoppas någon av er gör det!
MVH.
Hm, till att börja med, när du inte får det där eventet att köras som det ska, är dropdownen fortfarande kvar?
SanjiMedlem sedan juli 2009355 inlägg Det har du fullständigt rätt i, att den inte är! vad dum jag känner mig ibland... men frågan är då, hur kan jag lösa det? vad är det smidigaste sättet att se till att dropdownlistan inte försvinner vid nästa postback?
Du får återskapa den själv hela tiden. Mitt förslag är att du skapar en i OnInit, efter att baser.OnInit() har körts. Sedan skippar du att fånga eventet på din första dropdown. På så vis kommer den skapas varje gång av sig självt