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("&nbsp;") );
                                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

Antwort per Email an