Bonjour,
J'ai un problème que j'arrive pas à résoudre :
Mon probleme est le suivant :
Je veux binder une liste de userControl à un repeater
Voici mon Code :
Code Behind ==>
Page Aspx ==>
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { AfficherQuestionnaire(); } } private void AfficherQuestionnaire() { var lstControls = new List<BaseUserControl>(); var context = new SCMModelContainer(); foreach(Question question in context.Questions) { var userControl = AddQuestionAndResponses(question); lstControls.Add(userControl); } rQuestions.DataSource = lstControls; rQuestions.DataBind(); } protected BaseUserControl AddQuestionAndResponses(Question question) { var userControl = this.LoadControl(question.CurrentResponseType); if (userControl != null) { userControl.ID = string.Format("userControl_Question_{0}_Axe{1}", question.Id, question.AxeId); userControl.QuestionString = question.Libelle; if (question.Responses.Count != 0) { userControl.Responses = question.Responses.ToList(); userControl.BindControl(); } if (question.ResponseTypeId < 4 || (question.ResponseTypeId > 3 && question.Responses.Count > 0)) { //pnlQuestions.Controls.Add(userControl); } } return userControl; } protected BaseUserControl LoadControl(EResponseType responseType) { switch (responseType) { case EResponseType.Text : return LoadControl("~/Client/UCS/ResponseAsTextBox.ascx") as BaseUserControl; case EResponseType.Numeric: return LoadControl("~/Client/UCS/ResponseAsNumericalUpDown.ascx") as BaseUserControl; case EResponseType.Date: return LoadControl("~/Client/UCS/ResponseAsDatePicker.ascx") as BaseUserControl; case EResponseType.List: return LoadControl("~/Client/UCS/ResponseAsDropDownList.ascx") as BaseUserControl; case EResponseType.SimpleChoix: return LoadControl("~/Client/UCS/ResponseAsRadioButtonList.ascx") as BaseUserControl; case EResponseType.MultiChoix: return LoadControl("~/Client/UCS/ResponseAsCheckBoxList.ascx") as BaseUserControl; } return null; }
En fait mon probleme est que les controles ne s'afichent pas coté client, le repeater les prend commes des objets et applique la methode ToString() et je me retrouve avec un affichage (voir piece jointe)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <asp:Repeater ID="rQuestions" runat="server"> <ItemTemplate> <%#Container.DataItem%> </ItemTemplate> </asp:Repeater>
Partager