Problem med viewstate
Jeg har en side med et antal controls som jeg opretter i min pageload og adder til nogle celler i nogle tabeller.Disse controls skal jeg bruge værdien af når brugeren har trykket på en knap, da jeg skal bruge dem til opslag i databasen.
Problemet er at kontrollerne bliver reset ved hvert load, jeg forstår ikke helt hvorfor dette sker da jeg ellers regnede med at viewstate sørgede for at håndtere dette.
Her er koden på den side der har et problem: Håber ikke det er for uoverskueligt :)
Mvh.
using System;
using System.ComponentModel;
using System.Data;
using Oracle.DataAccess.Client;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
namespace vegasonline
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Table tblSoegSteder;
protected System.Web.UI.WebControls.Table tblSoegAutomater;
protected System.Web.UI.WebControls.Table tblSoegBestillinger;
protected System.Web.UI.WebControls.Button subSearch;
protected System.Collections.Hashtable searchFormFields;//=new System.Collections.Hashtable();
protected DAL dal=new DAL();
//WebControlHashTable a = new WebControlHashTable
private void Page_Load(object sender, System.EventArgs e)
{
if(!this.IsPostBack)
{
searchFormFields=new System.Collections.Hashtable();
makeFormFields();
makeSoegStedTabel();
makeSoegAutomatTabel();
makeSoegBestillingTabel();
}
}
private System.Web.UI.WebControls.TableRow makeTableRow(object[] controls)//System.Web.UI.WebControls.WebControl[] controls)
{
System.Web.UI.WebControls.TableRow row=new System.Web.UI.WebControls.TableRow();
System.Web.UI.WebControls.TableCell cell;
foreach(object[] celldescription in controls)
{
cell=new System.Web.UI.WebControls.TableCell();
System.Web.UI.WebControls.WebControl control=(System.Web.UI.WebControls.WebControl)celldescription[0];
int colspan=(int)celldescription[1];
cell.Controls.Add(control);
cell.ColumnSpan=colspan;
row.Cells.Add(cell);
}
return(row);
}
private void makeFormFields()
{
//searchFormFields.Add("sted_name",new ForceTextbox("Navn"));
ForceDropDownBox list=new ForceDropDownBox("Navn");
list.DataSource=dal.getStedNames();
list.DataTextField="MULIG";
list.DataValueField="VAERDI";
list.DataBind();
//System.Diagnostics.Debug.WriteLine();
//list.SelectionMode=System.Web.UI.WebControls.ListSelectionMode.Single;
searchFormFields.Add("sted_name",list);
searchFormFields.Add("sted_nr",new ForceTextbox("Nr."));
searchFormFields.Add("sted_adress",new ForceTextbox("Adresse"));
searchFormFields.Add("sted_postnr",new ForceTextbox("Postnr."));
list=new ForceDropDownBox("Navn");
list.DataSource=dal.getAutNames();
list.DataTextField="MULIG";
list.DataValueField="VAERDI";
list.DataBind();
searchFormFields.Add("automat_name",list);
list=new ForceDropDownBox("Type");
list.DataSource=dal.getAutType();
list.DataTextField="MULIG";
list.DataValueField="VAERDI";
list.DataBind();
searchFormFields.Add("automat_type",list);
searchFormFields.Add("automat_serialnumber",new ForceTextbox("Serienummer"));
searchFormFields.Add("order_wishDateFrom",new ForceTextbox("Ønsket dato fra"));
searchFormFields.Add("order_wishDateTo",new ForceTextbox("Ønsket dato til"));
}
private void makeSoegStedTabel()
{
tblSoegSteder.Rows.Add(makeTableRow(new object[]{new object[]{searchFormFields["sted_name"],3}}));
tblSoegSteder.Rows.Add(makeTableRow(new object[]{new object[]{searchFormFields["sted_nr"],1},new object[]{searchFormFields["sted_adress"],1},new object[]{searchFormFields["sted_postnr"],1}}));
//tblSoegSteder.Rows.Add(makeTableRow(new object[]{}));
}
private void makeSoegAutomatTabel()
{
tblSoegAutomater.Rows.Add(makeTableRow(new object[]{new object[]{searchFormFields["automat_name"],1}}));
tblSoegAutomater.Rows.Add(makeTableRow(new object[]{new object[]{searchFormFields["automat_type"],1}}));
tblSoegAutomater.Rows.Add(makeTableRow(new object[]{new object[]{searchFormFields["automat_serialnumber"],1}}));
}
private void makeSoegBestillingTabel()
{
tblSoegBestillinger.Rows.Add(makeTableRow(new object[]{new object[]{searchFormFields["order_wishDateFrom"],1}}));
tblSoegBestillinger.Rows.Add(makeTableRow(new object[]{new object[]{searchFormFields["order_wishDateTo"],1}}));
}
private void subSearch_Click(object sender, EventArgs e)
{
foreach(object control in searchFormFields)
{
Response.Write("<br>"+control.GetType());
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
subSearch.Click+=new EventHandler(subSearch_Click);
}
#endregion
}
}
