Forum: ASP.NET |
Thema:
Stranges ASP.NET Problem |
Von:
Dirk Klimke (
30.08.2006 20:26) |
Hallo
Ich habe ein merkwürdiges Problem.. Ich denke mittlerweile ganz gut aus in ASP.NET aber das ist crazy..
Ich erstelle auf einer WebForm dynmaisch auf ClickEvent in einer Table Rows und Cells. Also die Form hat zunächst zwei Textfelder. In dem einen gibst du einen Namen ein in die andere eine Zahl. Der Zahlenwert ist der Counter für die Schleife ( also die TableRows ).
Es werden in jeder Row drei Zellen erstellt. In den ersten beiden sind TextBoxen in der letzten eine DDL..
Nun kann der User aus der DDL wählen und beim onchange fülle ich die Textbox... Anschließend will ich die Werte aus den Controls in einer DB speichern.. Und hier wird es komisch.
Bei einem Click(Event) eines ASP Buttons laufe ich die erzeugten Controls durch und will mir die Werte holen. Allerdings scheint es so als würde dreimal auf den button geklickt werden.. Die Ausgabe des Counters führt zu 999 anstatt zu neun..
Ich weiß der Code ist lang... Wäre aber nett wenn jemand ne Idee hätte..
public partial class Login_newDishTest : LoginSessionClass
{
protected void Page_Load(object sender, EventArgs e)
{
#region PageLoad
if (IsSessionOK())
{
if (IsPostBack)
{
this.CreateControls();
}
if (!IsPostBack)
{
}
}
#endregion
}
#region SelectedIndexChanged AND OnLoad
void dr_SelectedIndexChanged(object sender, EventArgs e)
{
this.drawOnChange(ref sender);
}
void dr_Load(object sender, EventArgs e)
{
this.drawOnChange(ref sender);
}
#endregion
#region CreateControls
private void CreateControls()
{
int numrows = int.Parse(this.txbDishRange.Text);
int numcells = 3;
for (int j = 0; j < numrows; j++)
{
TableRow r = new TableRow();
for (int i = 0; i < numcells; i++)
{
TableCell c = new TableCell();
if (i == 0)
{
TextBox txbGoodsRange = new TextBox();
txbGoodsRange.CssClass = "textboxNorm";
txbGoodsRange.Style.Add(HtmlTextWriterStyle.Width, "40px");
txbGoodsRange.ID = "txbAmount_" + j;
txbGoodsRange.Attributes.Add("runat", "server");
//c.Controls.Add(new LiteralControl("row " + j.ToString() + ", cell " + i.ToString()));
c.Controls.Add(txbGoodsRange);
}
if (i == 1)
{
TextBox txbMeasure = new TextBox();
txbMeasure.CssClass = "textboxNorm";
txbMeasure.Attributes.Add("runat", "server");
txbMeasure.Style.Add(HtmlTextWriterStyle.Width, "70px");
txbMeasure.ID = "txbMeasure_" + j;
c.Controls.Add(txbMeasure);
}
if (i == 2)
{
string sql = "SELECT usw ";
DropDownList dr = new DropDownList();
dr.ID = "dr_" + j;
dr.Attributes.Add("runat", "server");
dr.DataSource = this.GetDataReader(sql);
dr.DataTextField = "Goods";
dr.DataValueField = "GoodsID";
dr.AutoPostBack = true;
dr.SelectedIndexChanged += new EventHandler(dr_SelectedIndexChanged);
dr.Load += new EventHandler(dr_Load);
dr.DataBind();
c.Controls.Add(dr);
}
r.Cells.Add(c);
}
Table1.Rows.Add(r);
this.btFurther.Enabled = false;
this.btFurther.Visible = false;
this.btAdd.Click += new ImageClickEventHandler(btAdd_Click);
this.btAdd.Enabled = true;
this.btAdd.Visible = true;
}
}
#endregion
#region SelectBox
private void drawOnChange(ref object sender)
{
DropDownList ddl = (DropDownList)sender;
String numIdent = ddl.ID.Substring((ddl.ID.IndexOf("_") + 1));
String cToFind = "txbMeasure_" + numIdent;
TextBox txtBox = (TextBox)this.Table1.FindControl(cToFind);
if (txtBox != null)
{
int index = int.Parse(ddl.SelectedValue);
txtBox.Text = this.getOneDBItem("SELECT usw.");
}
}
#endregion
#region Save Dish
void btAdd_Click(object sender, ImageClickEventArgs e)
{
int nCount = 0;
foreach (TableRow row in this.Table1.Rows)
{
foreach (TableCell cell in row.Cells)
{
nCount++;
}
}
Response.Write(nCount.ToString());
}
#endregion
Betreff |
Von |
Datum |
|
|
Hannes
Preishuber
|
06.09.2006 13:23 |
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!