Evenement parti en vacance ?

systemic_anomaly Messages postés 59 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 1 août 2005 - 9 mai 2005 à 11:01
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 - 9 mai 2005 à 15:20
Bonjour tt le monde,


J'ai un tableau (Web form, pas HTML) constitué à la base de 4 rows chacunes ayant 2 cellules qui se construit sur base d'un autre tableau déclaré static... (car mon tableau se réinitialisait à chaque page load se qui posait problème et c'est la seul solution que j'ai trouvé. déjà posté ici mais aucune réponse ne m'a aidé).

Pour chaque row: cell[0] = label
cell[1] = dropdownlist

J'ai associé un évènement à cette dropdownlist mais il ne se déclenche que si je refais le tableau à chaque page load (ce que je ne veux pas évidemment).

Voici le code (j'essaie de ne mettre que ce qui nous interesse):

protected System.Web.UI.WebControls.Table TableMenuCriteria;

protected
static Table TableMenu;

private
int NumberOfCells = 0;





private
void Page_Load(
object sender, System.EventArgs e)
{



if (!IsPostBack)
{


TableMenu =
new Table();





//Construct rows and cells for free text search
ConstructFreeTextSearch();



//Construct rows and cells for skill search
ConstructSkillSearch();



//Construct rows and cells for field search
ConstructFieldSearch();



//Construct rows and cells for variable field search
ConstructVariableFieldSearch();



for (
int i=0;i<TableMenu.Rows.Count;i++)
{
TableMenuCriteria.Rows.Add(
new TableRow());
NumberOfCells = TableMenu.Rows[i].Cells.Count;



for (
int j=0;j<NumberOfCells;j++)
{
TableMenuCriteria.Rows[i].Cells.Add(
new TableCell());
TableMenuCriteria.Rows[i].Cells[j].Controls.Add(TableMenu.Rows[i].Cells[j].Controls[0])
}
}
}




}


/// <summary>
/// Construct rows and cells for the free
/// text search
/// </summary>



private
void ConstructFreeTextSearch()


{
TableMenu.Rows.Add(
new TableRow());
TableMenu.Rows[0].Cells.Add(
new TableCell());
TableMenu.Rows[0].Cells[0].Controls.Add(ConstructLabel("Free text : "));
TableMenu.Rows[0].Cells.Add(
new TableCell());
TableMenu.Rows[0].Cells[1].Controls.Add(ConstructDropDownListFieldForFreeText());
}



/// <summary>
/// Construct a dropdownlist initialized with
/// the searchable field for free text
/// </summary>
/// <returns> DropDownList </returns>



private DropDownList ConstructDropDownListFieldForFreeText()
{


DropDownList aDropDownListFieldForFreeText =
new DropDownList();

aDropDownListFieldForFreeText.Items.Insert(0,"select a field...");
aDropDownListFieldForFreeText.Items.Insert(1,"Training title");
aDropDownListFieldForFreeText.Items.Insert(2,"Training description");
aDropDownListFieldForFreeText.Items.Insert(3,"Training provider");
aDropDownListFieldForFreeText.Items.Insert(4,"Trainig type");
aDropDownListFieldForFreeText.Items.Insert(5,"Certification type");
aDropDownListFieldForFreeText.Items.Insert(6,"Certification description");


/!\ VOILA L'ENDROIT OU J'AJOUTE L'EVENEMENT A LA DROPDOWN QUI SERA AJOUTEE A
UNE CELLULE DU TABLEAU.
aDropDownListFieldForFreeText.SelectedIndexChanged +=
new EventHandle (aDropDownListFieldForFreeText_SelectedIndexChanged);


aDropDownListFieldForFreeText.AutoPostBack =
true;



return aDropDownListFieldForFreeText;
}


Voila, j'espère que j'ai pu resté clair (j'en doute un peu).

Si je retire la condition "if (!IsPostBack)" l'evenement se declenche mais le tableau est forcement reinitialisé ce qui ne m'arrange pas.

Merci à ceux qui se pencheront sur mon problème.

P.S : désolé pour la mise en page du code pourrie...

1 réponse

cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 1
9 mai 2005 à 15:20
Et en utilisant une variable dans le ViewState pour garder l'état de ton tableau ou des valeurs ça peut pas le faire ?



En utilisant un

if (ViewState["valeur"]...


<--St@iLeR-->
0
Rejoignez-nous