Bonjour à Tous,

J'essaie d'intégrer un WebUserControl dans un TemplateField de Fields d'un DetailView selon mes codes ci-dessous, j'ai l'erreur
... Un apel à Bind doit être assigné à une propriété d'un contrôle dans un modèle.
J'ai testé mon WebUserControl et il fonctionne bien sur une simple page de test.

L'idée c'est d'afficher un TextBox et un Button; en cliquant sur le Button le calendrier doit s'afficher et en cliquant sur une date, cette dernière se copie sur le TextBox et le calendrier se referme.

Avec Ajax il y a un controle qui fait ça très bien. Mais pour le moment j'aimerais tout de même comprendre l'ASP.NET avant de commencer Ajax et/ou MVC.

Question:
1. Comment peut-on intégrer un WebUserControl dans un DetailView?

Merci d'avance de votre aide.


MyPage.aspx:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<asp:SqlDataSource ...
	<asp:DetailsView ...
		<Fields>
               		<asp:TemplateField HeaderText="PV AG reçu le :&nbsp;" SortExpression="Date_RecepPv_Ag">
                    		<EditItemTemplate>
                        		<uc1:MyWebUserControl ID="MyWebUserControl1" runat="server" Visible="true" Text='<%# Bind("Date_RecepPv_Ag") %>' />
                    		</EditItemTemplate>
                    		<ItemTemplate>
                        		<uc1:MyWebUserControl ID="MyWebUserControl1" runat="server" Visible="true" Text='<%# Bind("Date_RecepPv_Ag") %>'
                            ReadOnly="true" />
                    		</ItemTemplate>
                	</asp:TemplateField>
MyWebUserControl.aspx.cs:
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
 
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
public partial class MyWebUserControl : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        wucPanel1.Height = 22;
        wucPanel1.Width = 106;
        wucPanel1.Visible = true;
 
//        wucTextBox1.Height = 20;
        wucTextBox1.Width = 70;
        wucTextBox1.Visible = true;
        wucTextBox1.DataBind();
 
        wucButton1.Height =21;
        wucButton1.Width = 23;
        wucPanel1.Visible = true;
 
        wucCalendar1.Height = 0;
        wucCalendar1.Width = 0;
        wucCalendar1.Visible = false;
    }
 
    // Affectation de la date dans TextBox et masquage de Panel et du Calendrier
    protected void DateSelected(object sender, EventArgs e)
    {
        wucTextBox1.Text = wucCalendar1.SelectedDate.ToShortDateString();
        wucCalendar1.Visible = false;
        wucPanel1.Height = 23;
        wucPanel1.Width = 106;
    }
 
    // Affîchage du Calendrier
    protected void DisplayCalendar(object sender, EventArgs e)
    {
        //wucPanel1.Visible = true;
        wucCalendar1.Visible = true;
        wucPanel1.Width = 182;
        wucPanel1.Height = 174;
        wucCalendar1.Height = 150;
        wucCalendar1.Width = 180;
    }
}
MyWebUserControl.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
 
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MyWebUserControl.ascx.cs" Inherits="MyWebUserControl" %>
 
<asp:Panel ID="wucPanel1" runat="server" BorderStyle="Solid" BorderWidth="1" CssClass="calendar" >
    <asp:TextBox ID="wucTextBox1" runat="server" BorderStyle="None" />
 
    <asp:Button ID="wucButton1" runat="server" Text="1  " Font-Bold="True" OnClick="DisplayCalendar" />
 
    <asp:Calendar ID="wucCalendar1" runat="server" BackColor="#FFFFCC" 
        BorderColor="#FFCC66" DayNameFormat="Shortest" Font-Names="Verdana" Font-Size="8pt"
        ForeColor="#663399" 
        OnSelectionChanged="DateSelected" BorderWidth="1px" ShowGridLines="True" >
 
        <SelectedDayStyle BackColor="#CCCCFF" Font-Bold="True" />
        <SelectorStyle BackColor="#FFCC66" />
        <TodayDayStyle BackColor="#FFCC66" ForeColor="White" />
        <OtherMonthDayStyle ForeColor="#CC9966" />
        <NextPrevStyle Font-Size="9pt" ForeColor="#FFFFCC" />
        <DayHeaderStyle BackColor="#FFCC66" Font-Bold="True" Height="1px" />
        <TitleStyle BackColor="#990000" Font-Bold="True" Font-Size="9pt" 
            ForeColor="#FFFFCC" />
    </asp:Calendar>
</asp:Panel>