Hi Alex -
erstmal tausend dank, dass du dir soviel m�he gemacht hast. das ist echt riesig nett von dir. dein code leuchtet mir soweit ein. eigentlich habe ich auch nichts anderes gemacht, au�er die onIndexChange geschichten in der ascx festzulegen und das eventhandling nicht im codebehind hinzuzuf�gen.
aber ich sehe, du wei�t dem placeholder bei jedem pageload das control zu, ohne vorher die controls den placeholder zu leeren. bei mir endet das dann darin, dass immer mehr controls hinzugef�gt werden.
deswegen habe ich vor dem aufruf zum f�llen meines placeholder immer ein phInhalt.Controls.Clear().
vielleicht liegt da der hase begraben?
ansonsten versuche ich mal, deinen code so umzusetzen . . .
nochmals danke.
tom
----- Original Message ----- From: "Alexander Zeitler" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Thursday, December 30, 2004 10:39 AM
Subject: RE: [Asp.net] DropDownList Problem
Hallo,
.
die anderen zwei ddls, die in abh�ngigkeit von ddlMarke sind, f�lle ich innerhalb des geladenen controls durch einen postback beim itemChange des ddlMarke. wahrscheinlich muss ich die anderen zwei ddls dann auch von meiner default.aspx aus f�llen, nur wie kann ich das machen, wenn ich erst nach dem page_load den gew�hlten wert meiner ddlMarke abfragen kann ? ? ? :-/
ich habe mal versucht, Dein Problem nach meinem Verst�ndnis mit der Northwind DB nachzubauen. In der tb.aspx wird das Control tb.ascx zu Laufzeit aufgerufen. Au�erdem wird die Methode FillDropDownlList1 des UC aufgerufen. Diese holt die Kunden der Northwind und bindet diese an DDL1. Wenn in DDL1 der Index wechselt, werden in DDL 2 alle Bestellungen des Kunden gelistet (in der DDL steht der Einfachheit halber nur der Name des Kunden, relevant ist das Value-Feld von DDL2). �ndert sich nun was in DDL2, werden die Produkte (bzw. deren ID) zu der ausgew�hlten Bestellung in DDL3 angezeigt.
Code anbei.
Gruss
Alex
tb.aspx(.cs): using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls;
namespace test
{
/// <summary>
/// Zusammenfassung f�r tb.
/// </summary>
public class tb : System.Web.UI.Page
{
protected System.Web.UI.WebControls.PlaceHolder plhtb;private void Page_Load(object sender, System.EventArgs e)
{
tbuc uc1 = (tbuc)Page.LoadControl("tb.ascx");
uc1.ID = "uc1";
uc1.FillDropDownList1();
plhtb.Controls.Add(uc1);
}#region Vom Web Form-Designer generierter Code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: Dieser Aufruf ist f�r den ASP.NET Web
Form-Designer erforderlich.
//
InitializeComponent();
base.OnInit(e);
}/// <summary>
/// Erforderliche Methode f�r die Designerunterst�tzung.
/// Der Inhalt der Methode darf nicht mit dem Code-Editor
ge�ndert werden.
/// </summary>
private void InitializeComponent()
{
this.Load += new
System.EventHandler(this.Page_Load);} #endregion } }
<%@ Page language="c#" Codebehind="tb.aspx.cs" AutoEventWireup="false" Inherits="test.tb" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="en"> <head>
<title>tb</title>
<meta name="vs_defaultClientScript" content="JavaScript" > <meta name="vs_targetSchema" content="http://www.w3.org/1999/xhtml" > </head>
<body>
<form id="tb" method="post" runat="server">
<asp:placeholder id="plhtb" runat="server" /> </form>
</body> </html>
tb.ascx(.cs):
namespace test
{
using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;/// <summary>
/// Zusammenfassung f�r tb1.
/// </summary>
public class tbuc : System.Web.UI.UserControl {
protected System.Web.UI.WebControls.DropDownList
DropDownList1;
protected System.Web.UI.WebControls.DropDownList
DropDownList2;protected System.Web.UI.WebControls.DropDownList DropDownList3;
private void Page_Load(object sender, System.EventArgs e) {}
public void FillDropDownList1() { DropDownList1.DataSource = ReadCustomers(); DropDownList1.AutoPostBack = true; DropDownList1.DataValueField = "CustomerID"; DropDownList1.DataTextField = "CompanyName"; DropDownList1.DataBind(); }
private DataSet ReadCustomers() {
SqlConnection MyNWConn =
new
SqlConnection("Server=(local)\\NETSDK;Database=Northwind;Trusted_Connection=
True");
DataSet MyDataSet = new DataSet();
SqlDataAdapter oCommand = new SqlDataAdapter();
SqlCommand oledbcmd = new SqlCommand();
oledbcmd.CommandType = CommandType.Text;
oledbcmd.CommandText = "Select * from Customers";
oledbcmd.Connection = MyNWConn;
oCommand.SelectCommand = oledbcmd;
oCommand.Fill(MyDataSet,"Customers");
MyNWConn.Close();
return MyDataSet;
}private DataSet ReadOrders(string CustomerID) {
SqlConnection MyNWConn =
new
SqlConnection("Server=(local)\\NETSDK;Database=Northwind;Trusted_Connection=
True");
DataSet MyDataSet = new DataSet();
SqlDataAdapter oCommand = new SqlDataAdapter();
SqlCommand oledbcmd = new SqlCommand();
oledbcmd.CommandType = CommandType.Text;
oledbcmd.CommandText = "Select * from Orders WHERE
CustomerID = @CustomerID";
oledbcmd.Connection = MyNWConn;
oledbcmd.Parameters.Add("@CustomerID", CustomerID);
oCommand.SelectCommand = oledbcmd;
oCommand.Fill(MyDataSet,"Orders");
MyNWConn.Close();
return MyDataSet;
}
private DataSet ReadOrderDetails(int OrderID) { SqlConnection MyNWConn = new SqlConnection("Server=(local)\\NETSDK;Database=Northwind;Trusted_Connection= True"); DataSet MyDataSet = new DataSet(); SqlDataAdapter oCommand = new SqlDataAdapter(); SqlCommand oledbcmd = new SqlCommand(); oledbcmd.CommandType = CommandType.Text; oledbcmd.CommandText = "Select * from [Order Details] WHERE OrderID = @OrderID"; oledbcmd.Connection = MyNWConn; oledbcmd.Parameters.Add("@OrderID", OrderID); oCommand.SelectCommand = oledbcmd; oCommand.Fill(MyDataSet,"Orders"); MyNWConn.Close(); return MyDataSet; }
#region Vom Web Form-Designer generierter Code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: Dieser Aufruf ist f�r den ASP.NET Web
Form-Designer erforderlich.
//
InitializeComponent();
base.OnInit(e);
}/// <summary>
/// Erforderliche Methode f�r die
Designerunterst�tzung
/// Der Inhalt der Methode darf nicht mit dem
Code-Editor ge�ndert werden.
/// </summary>
private void InitializeComponent()
{
this.Load += new EventHandler(this.Page_Load);
this.DropDownList1.SelectedIndexChanged += new
EventHandler(DropDownList1_SelectedIndexChanged);
this.DropDownList2.SelectedIndexChanged += new
EventHandler(DropDownList2_SelectedIndexChanged);
}
#endregionprivate void DropDownList1_SelectedIndexChanged(object
sender, EventArgs e) {
DropDownList2.DataSource =
ReadOrders(DropDownList1.Items[DropDownList1.SelectedIndex].Value);
DropDownList2.AutoPostBack = true;
DropDownList2.DataValueField = "OrderID";
DropDownList2.DataTextField = "ShipName";
DropDownList2.DataBind();
}private void DropDownList2_SelectedIndexChanged(object
sender, EventArgs e) {
DropDownList3.DataSource =
ReadOrderDetails(int.Parse(DropDownList2.Items[DropDownList2.SelectedIndex].
Value));
DropDownList3.AutoPostBack = true;
DropDownList3.DataValueField = "ProductID";
DropDownList3.DataTextField = "ProductID";
DropDownList3.DataBind();
}} }
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="tb.ascx.cs" Inherits="test.tbuc" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%> <asp:DropDownList id="DropDownList1" runat="server"></asp:DropDownList><asp:DropDownList id="DropDownList2" runat="server"></asp:DropDownList><asp:DropDownList id="DropDownList3" runat="server"></asp:DropDownList>
_______________________________________________ Asp.net Mailingliste, Postings senden an: [email protected] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net
_______________________________________________ Asp.net Mailingliste, Postings senden an: [email protected] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net
