humm, ich hab mir mal nen Nachmittag um die Ohren gehauen und bin darauf gekommen, dass ich meinen Code aufteilen muss...der eine Teil kommt in DoDataBind() der andere nach page_load()...so ist dann der EventHandler-Funktion, welche ja erst nach page_load() gefeuert wird, das DDL-Objekt bekannt (weil als Objekt-Variable in meiner Page-Klasse enthalten und in page_load instanziert)...instanziert man nicht, so erh�lt man in der Eventhandler-Funktion eine NullReferenceException...also immer darauf achten, wo was hinzucoden ist...Der Teil des Ausgangscodes, den ich nun nach DoDataBind() abgeschoben hab, kann man dann nach belieben durchgehen...n�mlich einmal wenn kein IsPostBack und zum andern zum Ende der EventHandler-Funktion und die Daten aktualisiert anzuzeigen...
Der folgende Code mag f�r den einen oder anderen un�bersichtlich sein... wer sich f�r eine bereinigte Version interessiert...soll nicht darum verlegen sein mich darum anzubetteln ;) und Danke an die Helfer Request.Form hat es ja dann in diesem Fall nicht gebraucht... frage mich aber wof�r ich das je brauchen sollte...meine WebControls sind eh alle runat=server Fehler? anzusehen gibts das Ganze auch...wer Lust hat, der soll sich auf meine Projekt-Seite begeben das heisst... wenn ich denn meinen Rechner laufen hab. http://www.retails.de Login zum testen: asp//dotnet Gruss Serge ---------------- using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Data.OleDb; 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 IWTB.login.military { /// <summary> /// Zusammenfassungsbeschreibung f�r Cdefault. /// </summary> public class Cdefault : System.Web.UI.Page { private UserAccount acc; protected OleDbConnection db; protected System.Web.UI.WebControls.Panel pHeader; protected IWTB.login.ResourceDisplay rsd; protected OleDbDataAdapter daPrdTab; protected OleDbCommandBuilder cbPrdTab; protected System.Web.UI.WebControls.Table tblStatus; protected System.Web.UI.WebControls.Table tblComposite; protected System.Web.UI.WebControls.DropDownList[] dlstUnit; protected System.Web.UI.WebControls.TextBox[] txtQuantity; protected System.Web.UI.WebControls.DropDownList[] dlstFrom; protected System.Web.UI.WebControls.DropDownList[] dlstTo; protected int iCompositePanelsCount; protected System.Web.UI.WebControls.Button btnComposite; protected OleDbDataAdapter daMilTab; protected OleDbCommandBuilder cbMilTab; protected System.Web.UI.WebControls.Table tblOrder; protected System.Web.UI.WebControls.Button btnOrder; protected DataSet ds; public Cdefault() { Page.Init += new System.EventHandler(Page_Init); } private void Page_Load(object sender, System.EventArgs e) { //-- User Panel -- rsd = new IWTB.login.ResourceDisplay(); rsd.CssClass = "tableDefault"; rsd.Rows[0].Cells[0].CssClass = "tableHeaderTemplate"; pHeader.Controls.Add(rsd); //-- TableRow tr; TableCell td; //-- Build tblComposite -- iCompositePanelsCount = 3; dlstUnit = new DropDownList[iCompositePanelsCount]; txtQuantity = new TextBox[iCompositePanelsCount]; dlstFrom = new DropDownList[iCompositePanelsCount]; dlstTo = new DropDownList[iCompositePanelsCount]; for(int i = 0; i < iCompositePanelsCount; i++) { tr = new TableRow(); tr.HorizontalAlign = HorizontalAlign.Center; td = new TableCell(); dlstUnit[i] = new DropDownList(); td.Controls.Add(dlstUnit[i]); tr.Cells.Add(td); td = new TableCell(); txtQuantity[i] = new TextBox(); txtQuantity[i].CssClass = "TextBox"; txtQuantity[i].Width = 25; td.Controls.Add(txtQuantity[i]); tr.Cells.Add(td); td = new TableCell(); dlstFrom[i] = new DropDownList(); td.Controls.Add(dlstFrom[i]); tr.Cells.Add(td); td = new TableCell(); dlstTo[i] = new DropDownList(); td.Controls.Add(dlstTo[i]); tr.Cells.Add(td); tblComposite.Rows.Add(tr); } tr = new TableRow(); td = new TableCell(); td.CssClass = "tableStroke"; td.ColumnSpan = 4; tr.Cells.Add(td); tblComposite.Rows.Add(tr); //-- InitializeConnection(); if (!Page.IsPostBack) { DoDataBind(); } } private void Page_Init(object sender, EventArgs e) { acc = (UserAccount)Session["User"]; if (acc == null) { Response.Redirect("../default.aspx", true); } InitializeComponent(); } protected void InitializeConnection() { string sDBPath = Server.MapPath("..\\..\\db\\"); string sDBFile = sDBPath + acc.IDToString().Replace(":","%") +".mdb"; string sConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + sDBFile; db = new OleDbConnection(sConn); string SQL = "SELECT [Name],[Launch Cost],[Travel Time],[Base]," + "[Fleet1],[Fleet2],[Fleet3] FROM prd_tab"; daPrdTab = new OleDbDataAdapter(); daPrdTab.SelectCommand = new OleDbCommand(SQL, db); cbPrdTab = new OleDbCommandBuilder(daPrdTab); SQL = "SELECT * FROM mil_tab"; daMilTab = new OleDbDataAdapter(); daMilTab.SelectCommand = new OleDbCommand(SQL, db); cbMilTab = new OleDbCommandBuilder(daMilTab); ds = new DataSet(); db.Open(); daPrdTab.Fill(ds, "prd_tab"); daMilTab.Fill(ds, "mil_tab"); db.Close(); } #region Web Form Designer generated code /// <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 protected void DoDataBind() { rsd.db = db; rsd.Paint(); TableRow tr; TableCell td; #region tblStatus int[] iTravelTime = new int[3]; int[] iLaunchCost = new int[3]; ArrayList alstUnit = new ArrayList(); alstUnit.Add("no unit"); foreach(DataRow dr in ds.Tables["prd_tab"].Rows) { // add the body to tbl tr = new TableRow(); td = new TableCell(); td.Controls.Add(new LiteralControl(dr["Name"].ToString()) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl(dr["Base"].ToString()) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl(dr["Fleet1"].ToString()) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl(dr["Fleet2"].ToString()) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl(dr["Fleet3"].ToString()) ); tr.Cells.Add(td); tblStatus.Rows.Add(tr); // // get highest unit travel time if((int)dr["Travel Time"] > iTravelTime[0] && (int)dr["Fleet1"] > 0) iTravelTime[0] = (int)dr["Travel Time"]; if((int)dr["Travel Time"] > iTravelTime[1] && (int)dr["Fleet2"] > 0) iTravelTime[1] = (int)dr["Travel Time"]; if((int)dr["Travel Time"] > iTravelTime[2] && (int)dr["Fleet3"] > 0) iTravelTime[2] = (int)dr["Travel Time"]; // // sum up the launch cost iLaunchCost[0] += (int)dr["Launch Cost"] * (int)dr["Fleet1"]; iLaunchCost[1] += (int)dr["Launch Cost"] * (int)dr["Fleet2"]; iLaunchCost[2] += (int)dr["Launch Cost"] * (int)dr["Fleet3"]; // // add unit name to alstUnit alstUnit.Add(dr["Name"]); } // add table rows fleet status tr = new TableRow(); td = new TableCell(); td.CssClass = "tableStroke"; td.ColumnSpan = 5; tr.Cells.Add(td); tblStatus.Rows.Add(tr); tr = new TableRow(); td = new TableCell(); td.ColumnSpan = 2; td.Controls.Add(new LiteralControl("<i>Galaxy Travel Time</i>") ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl(iTravelTime[0].ToString() ) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl(iTravelTime[1].ToString() ) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl(iTravelTime[2].ToString() ) ); tr.Cells.Add(td); tblStatus.Rows.Add(tr); tr = new TableRow(); td = new TableCell(); td.ColumnSpan = 2; td.Controls.Add(new LiteralControl("<i>Galaxy Launch Cost</i>") ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl(iLaunchCost[0].ToString() ) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl(iLaunchCost[1].ToString() ) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl(iLaunchCost[2].ToString() ) ); tr.Cells.Add(td); tblStatus.Rows.Add(tr); tr = new TableRow(); td = new TableCell(); td.ColumnSpan = 2; td.Controls.Add(new LiteralControl("<i>Sector Travel Time</i>") ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl((iTravelTime[0] + 2).ToString() ) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl((iTravelTime[1] + 2).ToString() ) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl((iTravelTime[2] + 2).ToString() ) ); tr.Cells.Add(td); tblStatus.Rows.Add(tr); tr = new TableRow(); td = new TableCell(); td.ColumnSpan = 2; td.Controls.Add(new LiteralControl("<i>Sector Launch Cost</i>") ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl((iLaunchCost[0] * 1.5).ToString() ) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl((iLaunchCost[0] * 1.5).ToString() ) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl((iLaunchCost[0] * 1.5).ToString() ) ); tr.Cells.Add(td); tblStatus.Rows.Add(tr); tr = new TableRow(); td = new TableCell(); td.ColumnSpan = 2; td.Controls.Add(new LiteralControl("<i>Universe Travel Time</i>") ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl((iTravelTime[0] + 4).ToString() ) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl((iTravelTime[1] + 4).ToString() ) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl((iTravelTime[2] + 4).ToString() ) ); tr.Cells.Add(td); tblStatus.Rows.Add(tr); tr = new TableRow(); td = new TableCell(); td.ColumnSpan = 2; td.Controls.Add(new LiteralControl("<i>Universe Launch Cost</i>") ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl((iLaunchCost[0] * 2).ToString() ) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl((iLaunchCost[1] * 2).ToString() ) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl((iLaunchCost[2] * 2).ToString() ) ); tr.Cells.Add(td); tblStatus.Rows.Add(tr); tr = new TableRow(); td = new TableCell(); td.CssClass = "tableStroke"; td.ColumnSpan = 5; tr.Cells.Add(td); tblStatus.Rows.Add(tr); // #endregion ArrayList alstFromTo = new ArrayList(); alstFromTo.Add("Base"); alstFromTo.Add("Fleet1"); alstFromTo.Add("Fleet2"); alstFromTo.Add("Fleet3"); for(int i = 0; i < iCompositePanelsCount; i++) { dlstUnit[i].DataSource = alstUnit; dlstUnit[i].DataBind(); dlstFrom[i].DataSource = alstFromTo; dlstFrom[i].DataBind(); dlstTo[i].DataSource = alstFromTo; dlstTo[i].DataBind(); } #region tblOrder ArrayList alstNewOrder = new ArrayList(); alstNewOrder.Add("No Orders"); alstNewOrder.Add("Return Home"); alstNewOrder.Add("Attack 1 Hour"); alstNewOrder.Add("Attack 2 Hours"); alstNewOrder.Add("Attack 3 Hours"); alstNewOrder.Add("Attack 4 Hours"); alstNewOrder.Add("Defend 1 Hour"); alstNewOrder.Add("Defend 2 Hours"); alstNewOrder.Add("Defend 3 Hours"); alstNewOrder.Add("Defend 4 Hours"); alstNewOrder.Add("Defend 5 Hours"); alstNewOrder.Add("Defend 6 Hours"); alstNewOrder.Add("Defend 7 Hours"); alstNewOrder.Add("Defend 8 Hours"); int iMilTabRowsCount = ds.Tables["mil_tab"].Rows.Count; DropDownList[] dlstNewOrder = new DropDownList[iMilTabRowsCount]; TextBox[] txtNewOrder = new TextBox[iMilTabRowsCount]; for(int i = 0; i < iMilTabRowsCount; i++) { DataRow dr = ds.Tables["mil_tab"].Rows[i]; tr = new TableRow(); tr.HorizontalAlign = HorizontalAlign.Center; td = new TableCell(); td.Controls.Add(new LiteralControl(dr["ID"].ToString()) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl(dr["Order"].ToString()) ); tr.Cells.Add(td); td = new TableCell(); td.Controls.Add(new LiteralControl(dr["Heading"].ToString()) ); tr.Cells.Add(td); td = new TableCell(); dlstNewOrder[i] = new DropDownList(); dlstNewOrder[i].DataSource = alstNewOrder; dlstNewOrder[i].DataBind(); td.Controls.Add(dlstNewOrder[i]); txtNewOrder[i] = new TextBox(); txtNewOrder[i].CssClass = "TextBox"; txtNewOrder[i].Width = 70; td.Controls.Add(new LiteralControl(" ") ); td.Controls.Add(txtNewOrder[i]); tr.Cells.Add(td); tblOrder.Rows.Add(tr); } tr = new TableRow(); td = new TableCell(); td.CssClass = "tableStroke"; td.ColumnSpan = 4; tr.Cells.Add(td); tblOrder.Rows.Add(tr); #endregion } protected void btnComposite_Click(object sender, EventArgs e) { #region Aktion durchf�hren for(int i = 0; i < iCompositePanelsCount; i++) { if(dlstUnit[i].SelectedItem.Value == "no unit") continue; DataRow[] drPrdTab = ds.Tables["prd_tab"].Select( "Name = '" + dlstUnit[i].SelectedItem.Value + "'"); int iQuantity = Convert.ToInt32(txtQuantity[i].Text); if ((int)drPrdTab[0][dlstFrom[i].SelectedItem.Value] < iQuantity) { iQuantity = (int)drPrdTab[0][dlstFrom[i].SelectedItem.Value]; drPrdTab[0][dlstFrom[i].SelectedItem.Value] = 0; } else { drPrdTab[0][dlstFrom[i].SelectedItem.Value] = (int)drPrdTab[0][dlstFrom[i].SelectedItem.Value] - iQuantity; } drPrdTab[0][dlstTo[i].SelectedItem.Value] = (int)drPrdTab[0][dlstTo[i].SelectedItem.Value] + iQuantity; rsd.Paint("Name = '" + dlstUnit[i].SelectedItem.Value + "'| " + dlstFrom[i].SelectedItem.Value + "|" + dlstTo[i].SelectedItem.Value + "| " + iQuantity.ToString() ); } db.Open(); daPrdTab.Update(ds, "prd_tab"); db.Close(); #endregion DoDataBind(); } } } ------ -----Urspr�ngliche Nachricht----- Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]Im Auftrag von Christoph Wille Gesendet: Montag, 4. M�rz 2002 09:09 An: aspDEdotnet Betreff: [aspdedotnet] Re: Wert einer dynamisch hinzugef�gten DropDownList... At 11:39 AM 3/3/2002 +0100, you wrote: >Ich hab ein Form auf welchem zur Laufzeit dynamisch eine Reihe DropDownLists >hinzugef�gt werden...Dynamik ist hier ein Muss, weil DataSource der DDLists >die Datenbank ist...das Problem, das sich jetzt ergibt, ist den Wert der >DDLists nach einem Postback zu ermitteln, da die DDlists-Objekte mit dem >Postback praktisch aufgel�st werden... normal mit Request.Form, wie w�r's damit? Chris | [aspdedotnet] als [EMAIL PROTECTED] subscribed | http://www.dotnetgerman.com/archiv/aspdedotnet/ = Listenarchiv | Sie k�nnen sich unter folgender URL an- und abmelden: | http://www.dotnetgerman.com/listen/aspDEdotnet.asp | [aspdedotnet] als [email protected] subscribed | http://www.dotnetgerman.com/archiv/aspdedotnet/ = Listenarchiv | Sie k�nnen sich unter folgender URL an- und abmelden: | http://www.dotnetgerman.com/listen/aspDEdotnet.asp
