WebUserControl, Fields et Bind
Bonjour à Tous, :help:
J'essaie d'intégrer un WebUserControl dans un TemplateField de Fields d'un DetailView selon mes codes ci-dessous, j'ai l'erreur
Citation:
... 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:
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 : " 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:
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:
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> |