Generieren DropDownList aus dem code hinter
Hallo, ich bin die Generierung einer DropDownList in meinem code-behind-Datei
protected DropDownList CountryList()
{
DropDownList ddl = new DropDownList();
XDocument xmlDoc = XDocument.Load(Server.MapPath("Countries.xml"));
var countries = from country in xmlDoc.Descendants("Country")
select new
{
Name = country.Element("name").Value,
};
foreach (var c in countries)
{
ddl.Items.Add(c.Name);
}
return ddl;
}
Hatte ich Träume, dann mit <%= CountryList() %> auf meiner aspx-Seite. Aber wenn ich das mache druckt es die Zeichenfolge "System.Web.UI.WebControls.DropDownList".
Kann ich machen das Weg, es zu tun die Arbeit, oder muss ich das setup ein ContentPlaceHolder und fügen Sie dann die DropDownList den Inhalt?
Cheers
- Jubel für die Kommentare, Danke
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
<%= %>
ist nur eine Kurzversion der Antwort.Write-Methode, sollten Sie fügen Sie die Steuerelemente programmgesteuertOder fügen Sie einfach ein asp:DropDownList tag Sie es wollen, und dann in der code-behind-können Sie binden die Daten direkt aus dem Linq to XML-Abfrage, die mit der DataSource-Eigenschaft und die DataBind () - Methode.
Beispiel:
Auf Ihre .aspx-Datei:
Auf Ihre code-behind-Page_Load:
Da deine Abfrage hat nur einen ausgewählten Bereich, den Sie nicht haben, um geben Sie die DataValueField und DataTextField Werte.
Den
<%=...%>
tags werden vorverarbeitet, indem die ASP.NET Seite bedeuten<% Response.Write(...) %>
daher ist Ihr Ansatz nicht zur Arbeit zu gehen, und Sie müssen einen ContentPlaceHolder, Panel, Platzhalter oder andere naming-container hinzufügen den DropDownList zu.
Auch, wenn Sie wollen, um die Seite postbacks usw. nicht so gut arbeiten, müssen Sie (und ggf. Auffüllen) der DDL auf der Seite Init-Ereignis, und geben Sie eine ID sonst können Sie am Ende mit inkonsistenten view state.
Erklären das DropDownList-wie normal-in Ihrer aspx-Seite, und fügen Sie dann die Elemente in Ihrem Page_Load() oder wo immer sonst Sie tun Datenbindung.