Bonjour,
J'ai un datagrid, et lorsque j'édite une ligne, je remplace certaines TextBoxs par des DropDowLists.
Le problème, est quand je fais save, je tombe sur ce message d'erreur:
Et j'ai l'impression que cette erreur arrive avant même le retour serveur (je ne passe par aucun point d'arrêt du débbugeur).Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.
Le problème vient bien des DDL car si je ne les mets pas, je n'ai pas d'erreur.
Voici mon code où j'inclus les DDL:
Merci d'avance à ceux qui ont une idée du problème et une solution à proposer!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 item.Cells[(int)WorkEnum.PRO_NAME_COLUMN].Controls.RemoveAt(0); DropDownList ddlProjects = new DropDownList(); ddlProjects.DataTextField = "PRO_NAME"; ddlProjects.DataValueField = "PRO_ID"; ddlProjects.ID = "ddlProjects"; BindListInsertSelect(ddlProjects, CurrentOdessaController.GetAllProjectsByCI(CurrentOdessaController.CurrentUser.SER_CI)); ddlProjects.SelectedValue = item.Cells[(int)WorkEnum.PRO_ID_COLUMN].Text; item.Cells[(int)WorkEnum.PRO_NAME_COLUMN].Controls.Add(ddlProjects); ViewState.Add(ddlProjects.ID, ddlProjects.UniqueID); CompareValidator ddlProjectsCompareValidator = new CompareValidator(); ddlProjectsCompareValidator.ControlToValidate = ddlProjects.ID; ddlProjectsCompareValidator.ValidationGroup = "saveWorkValidationGroup"; ddlProjectsCompareValidator.Text = "*"; ddlProjectsCompareValidator.ValueToCompare = "-1"; ddlProjectsCompareValidator.Operator = ValidationCompareOperator.NotEqual; ddlProjectsCompareValidator.ErrorMessage = "Project?"; (item.Cells[(int)WorkEnum.PRO_NAME_COLUMN].Controls).Add(ddlProjectsCompareValidator); item.Cells[(int)WorkEnum.TAS_NAME_COLUMN].Controls.RemoveAt(0); DropDownList ddlTasks = new DropDownList(); ddlTasks.DataTextField = "TAS_NAME"; ddlTasks.DataValueField = "TAS_ID"; ddlTasks.ID = "ddlTasks"; BindListInsertSelect(ddlTasks, CurrentOdessaController.GetAllTasksByProject(Convert.ToInt32(item.Cells[(int)WorkEnum.PRO_ID_COLUMN].Text))); ddlTasks.SelectedValue = item.Cells[(int)WorkEnum.TAS_ID_COLUMN].Text; item.Cells[(int)WorkEnum.TAS_NAME_COLUMN].Controls.Add(ddlTasks); ViewState.Add(ddlTasks.ID, ddlTasks.UniqueID); CompareValidator ddlTasksCompareValidator = new CompareValidator(); ddlTasksCompareValidator.ControlToValidate = ddlTasks.ID; ddlTasksCompareValidator.ValidationGroup = "saveWorkValidationGroup"; ddlTasksCompareValidator.Text = "*"; ddlTasksCompareValidator.ValueToCompare = "-1"; ddlTasksCompareValidator.Operator = ValidationCompareOperator.NotEqual; ddlTasksCompareValidator.ErrorMessage = "Task?"; (item.Cells[(int)WorkEnum.TAS_NAME_COLUMN].Controls).Add(ddlTasksCompareValidator); ddlProjects.Attributes.Add("onchange", "return showTasks(this.value, '" + ddlTasks.ClientID + "')");![]()
Partager