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);
}
#endregion

private 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

Antwort per Email an