[ATLAS][VS2005][C#]Pb d'un popup calendar d'atlas

Résolu
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006 - 15 mai 2006 à 21:07
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006 - 19 mai 2006 à 13:24
Bonjour,



J'ai un problème avec l'utilisation d'une popup du Control Toolkit Atlas.

Le controle Atlas a pour fonction , l'affichage d'un calendrier lors d'un clique sur un textbox, puis
lorsque l'on clique sur le calendrier, celui ci affiche la date choisi
dans la textbox.

En l'executant dans un page, cela marche nickel!!

Mais probleme, dans la modification de mon gridview, j'ai mis mon
champs Date en Template et j'ai fais glisser le controle Atlas dans le
EditTemplate pour que celui ci apparaisse lors de la modification et
je mets dans le fichier.cs :



protected void Calendar1_SelectionChanged(object sender, EventArgs e)

{

PopupControlExtender1.Commit(DateTextBox, Calendar1.SelectedDate.ToString("dd MMMM yyy"));

}



Et il me dis tout d'abord que :


Le nom 'DateTextBox' n'existe pas dans le contexte actuel!
Alors que la textbox avec comme ID = DateTextBox se situe dans mon itemtemplate!!
Et juste pour essayer si sa marche, je rajoute en dehors du
EditTemplate une autre textbox "DateTextBox" et lorsque je clique sur
modifier sa me mets :


The UpdatePanel 'UpdatePanel1' was not present when the page's
InitComplete event was raised. This is usually caused when an
UpdatePanel is placed inside a template.



????



Merci d'avance

18 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 mai 2006 à 15:57
J'ai rapidement regardé hier soir, et j'ai pas vu de solution simple :(

J'aime pas dire ca, mais désolé ce n'est pour le moment pas possible.

J'ai quand même une solution en tête mais cela demanderais BEAUCOUP de boulot, il faut bien connaitre Atlas, JavaScript, Asp.net et ce serait possible ... mais pas simplement.

Essaye de voir sur le forum de http://atlas.asp.net normalement la team chargé du dev d'Atlas réponds aux questions ou du moins passe pour voir les problèmes ... :s

bon courage,

<hr />Cyril - MVS - MCP
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 mai 2006 à 16:21
Oui normal, qu'il te dit que TB_Date n'existe pas ... vu que tu es dans une liste, tu as plusieurs TB_Date ....

la solution la plus simple serait d'avoir un DateTimePicker, pour l'instant ce controle n'est pas fournis, mais j'espere bien que les innovations d'Atlas le permettront ;)

regarde sur le net, il y a pleins de controle DateTimePicker disponible.

<hr />Cyril - MVS - MCP
3
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006
17 mai 2006 à 17:06
PS: ou pourrais trouver un Date>TimePicker a telecharger, je vois plein de site expliquand l'utilisation mais pour le dl c'est autre chose :s
Merci
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
15 mai 2006 à 21:24
Bonjour,

Comme l'indique le message tu ne peux pas rajouter un updatePanel dans un ItemTemplate, cela pour des raisons tout à fait logique si on connait bien le fonctionnement d'asp.net :-)

pour ton autre problème, tu ne peux pas utiliser DateTextBox dans ton code car tu ne sais pas duquel il s'agit vu qu'il va se repeter avec tes données ...

pour répondre à la question,euh *-) faudrais que je regarde comment fonctionne le PopupControlExtender pour t'expliquer comment faire ce que tu veux (j'ai ma petite idée mais j'ai du mal à la comprendre dans ma petite tête alors pour l'expliquer ...)


<HR>
Cyril - MVS - MCP
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006
15 mai 2006 à 21:40
Oui j'avais compris que le updatePanel gené mais comme sans sa le popup calendar ne pouver fonctionner, je ne voyais vraiment pas comment faire...
Au debut j'avais utiliser un calendar simple en Visible = false mais le probleme c'est que je n'est pas trouver d'equivalent de OnClick pour le textbox, donc je me suis tourner vers Atlas!
Helas, il y a eu ce probleme
Tiens moi au courant si tu trouves une solution, ce serait vraiment chouette!

Merci
0
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006
17 mai 2006 à 16:18
Ok je vais voir mais sinon tu as une autre solution sans utiliser le popup d'Atlas???
J'ai essyé de mettre ma colonne en template puis dans le edittemplate de mettre une textbox et un calendar mais quand je mets :

protected
void Calendar1_SelectionChanged(
object sender,
EventArgs e){

TB_Date.Text = Calendar1.SelectedDate.ToString(

"dd MMMM yyy");}

Il me dis que la TB_Date n'existe pas...
N'existe-t-il pas un moyen simple????
0
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006
17 mai 2006 à 16:42
Oki lol, bon bah alors j'ai pas d'autre choix que d'utiliser le DateTimePicker lol (je suis tombé bien bas lol)
Merci encore et bon courage!
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 mai 2006 à 19:23
J'en ai trouvé un ici : http://www.codeproject.com/aspnet/DateTimePicker.asp je l'ai jamais testé

<hr />Cyril - MVS - MCP
0
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006
17 mai 2006 à 20:08
Je voudrais savoir comment je fais pour faire fonctionner le DateTimePicker car dans le site, le DateTimePicker est en .NET 1.0 , enfin, j'essaye de le faire marcher en rajouter un element mais sa ne fonctionne pas :s
Merci
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 mai 2006 à 20:20
J'ai testé celui de codeproject il est assez pourris :p

regarde alors celui ci :  http://www.obout.com/calendar/ (que j'ai pas testé non plus, mais je connais le site et généralement c'est correcte ;))

<hr />Cyril - MVS - MCP
0
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006
17 mai 2006 à 20:36
Enfin je t'explique ce que j'ai fais, j'ai dl le fichier, puis dans mon appli web, dans le fichier Bin, j'ai rajouté "AssemblyInfo.cs" et "WebCustomControl1.cs" puis j'ai essayé de compiler le fichier "WebCustomControl1.cs" pour qu'il me creer la DLL mais il me dis :
Le type ou le nom d'espace de noms 'ControlDesigner' est introuvable... Je pense qu'il manque un using mais il y a deja dans les using :
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Drawing;
using System.Web.UI.HtmlControls;
using System.Web.UI.Design;
using System.ComponentModel.Design;

Et bon je n'ai pas touché au fichier donc je sais pas.. ai-je mal utiliser le DateTimePicker???
0
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006
17 mai 2006 à 20:49
Re,
Voila ce que j'ai fais, tout d'abord, j'ai pris le fichier Dtpicker.sln et je l'ai ouvert, VS2005 m'a converti les fichiers. Puis lorsque je compile le fichier "WebCustomControl1.cs", il me dis que "this.Behavior" est obsolete mais il ne me donne rien, aucun lien pour voir ce que c'est devenu maintenant.
Autre probleme, j'ai importer dans mon projet Web, dans le dossier Bin, le fichier "WebCustomControl1.cs" mais le probleme c'est que lorsque je le genere pour obtenir la DLL pour pouvoir l'utiliser (enfin je sais pas comment on fais pour utiliser le DateTimePicker donc j'esssaye sa car je pense que c'est comme sa mais bon si c'est pas comme sa dis le moi :d) il me dis "le type ou le noms d'espace de nom 'Control Designer' est introuvable" alors que la generation du fichier original il ne me le dis pas...
Pourquoi???

Merci
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 mai 2006 à 21:51
Euh ???

tu compiles quoi toi ? une fois que tu recuperes le zip du dernier lien, tu as dedans un dossier bin, tu recuperes la dll, et tu la mets ou tu veux sur ta machine, puis tu fais un add reference tu vas chercher ta dll, ensuite dans ta page, tu rajoutes :

<%

@
Register
TagPrefix="obout"
Namespace="OboutInc.Calendar2"
Assembly="obout_Calendar2_NET" %>

et

<obout:Calendar ID="Calendar1" runat="server"
    StyleFolder = "../styles/dark"
    DatePickerMode = "true"
    TextBoxId = "txtDate"
    DatePickerImagePath = "../styles/icon2.gif"
    ScriptPath="calendarScript"
    MonthWidth="147"
    MonthHeight="133">
</obout:Calendar>

n'oublie pas également dans mettre le fichier javascript ainsi que les styles la ou il faut ...

<hr />Cyril - MVS - MCP
0
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006
17 mai 2006 à 22:16
Non moi j'etais entrain de tester l'autre eh eh eh , mes derniers post n'ont rien à voir avec le dernier lien ^^ , là je teste l'autre mais j'ai lu deja les infos, c'est vraiment un truc interessant!
0
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006
18 mai 2006 à 17:01
Hello!!!

Dis moi j'ai un probleme etrange...
Donc j'ai utilisé le calendar de obout et bon je ne sias pas si sa viens vraiment de la mais quand je mis mon GridView et que je fais un update sans faire un EditTemplate sur Date bah sa marche mais quand j'ai mis dans le EditTemplate le calendar de obout il me dis : 
La variable scalaire "@date" doit être déclarée.

Tu sais pourquoi???
0
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006
18 mai 2006 à 17:14
Voila, j'ai essayé aussi de ne pas mettre date en EditTemplate et j'ai mis la colonne projet en DDL et pareil,
La variable scalaire "@projet" doit être déclarée.

Je comprends plus rien :s

Voici ma page si tu vois c'est quoi le probleme :
<

form
id="form1"
runat="server">

<div>

<span
style="font-size: 20pt; color: #0000ff">Liste des comptes-rendus
<br
/>

</span>

<hr
/>

</div>

<asp:Label
ID="LB_Identifiant"
runat="server"
Font-Bold="True"></asp:Label>, vos comptes-rendus pour

<asp:DropDownList
ID="DDL_Mois"
runat="server"
AutoPostBack="True"
OnDataBinding="DDL_Mois_DataBinding">

</asp:DropDownList>

<asp:DropDownList
ID="DDL_Annee"
runat="server"
AutoPostBack="True"
OnDataBinding="DDL_Annee_DataBinding">

</asp:DropDownList><br
/>

<hr
/>

<asp:GridView
ID="GridView1"
runat="server"
AutoGenerateColumns="False"
DataSourceID="SqlDataSource1"

EmptyDataText="Il n'y a aucun enregistrement de donn‚es … afficher."
CellPadding="4"
DataKeyNames="id"
ForeColor="#333333"
GridLines="None">

<Columns>

<asp:CommandField
ButtonType="Image"
CancelImageUrl="~/icone/cancel.jpg"
DeleteImageUrl="~/icone/supp.jpg"

EditImageUrl="~/icone/modif.jpg"
ShowDeleteButton="True"
ShowEditButton="True"

UpdateImageUrl="~/icone/update.jpg"
/>

<asp:BoundField
DataField="id"
HeaderText="id"
ReadOnly="True"
SortExpression="id"

Visible="False"
/>

<asp:BoundField
DataField="userid"
HeaderText="userid"
SortExpression="userid"
Visible="False"
/>

<asp:TemplateField
HeaderText="date"
SortExpression="date">

<EditItemTemplate>

<ASP:TextBox
ID="txtDate"
runat="server"></asp:TextBox>

<obout:Calendar
ID="Calendar2"
runat="server"

StyleFolder
=
"calendar/styles/blue"

DatePickerMode
=
"true"

TextBoxId
=
"txtDate"

DatePickerImagePath
=
"calendar/styles/icon2.gif"

ScriptPath="calendar/calendarscript"

ShowYearSelector="False"

DateFormat="dd MMMM yyyy">

</obout:Calendar>

</EditItemTemplate>

<ItemTemplate>

<asp:Label
ID="Label3"
runat="server"
Text='<%# Bind("date") %>
'></asp:Label>

</ItemTemplate>

</asp:TemplateField>

<asp:TemplateField
HeaderText="projet"
SortExpression="projet">

<EditItemTemplate>

<asp:DropDownList
ID="DropDownList1"
runat="server"
AutoPostBack="True"
DataSourceID="SqlDataSource2"

DataTextField="projet"
DataValueField="projet">

</asp:DropDownList><asp:SqlDataSource
ID="SqlDataSource2"
runat="server"
ConnectionString="<%$ ConnectionStrings:ldapConnectionString2 %>
"

SelectCommand="SELECT DISTINCT [projet] FROM [proact]"></asp:SqlDataSource>

</EditItemTemplate>

<ItemTemplate>

<asp:Label
ID="Label1"
runat="server"
Text='<%# Bind("projet") %>
'></asp:Label>

</ItemTemplate>

</asp:TemplateField>

<asp:TemplateField
HeaderText="activite"
SortExpression="activite">

<EditItemTemplate>

<asp:DropDownList
ID="DropDownList2"
runat="server"
DataSourceID="SqlDataSource3"

DataTextField="activite"
DataValueField="activite">

</asp:DropDownList><asp:SqlDataSource
ID="SqlDataSource3"
runat="server"
ConnectionString="<%$ ConnectionStrings:ldapConnectionString2 %>
"

SelectCommand="SELECT [activite] FROM [proact] WHERE ([projet] = @projet)">

<SelectParameters>

<asp:ControlParameter
ControlID="DropDownList1"
Name="projet"
PropertyName="SelectedValue"
/>

</SelectParameters>

</asp:SqlDataSource>

</EditItemTemplate>

<ItemTemplate>

<asp:Label
ID="Label2"
runat="server"
Text='<%# Bind("activite") %>
'></asp:Label>

</ItemTemplate>

</asp:TemplateField>

<asp:BoundField
DataField="duree"
HeaderText="duree"
SortExpression="duree"
/>

<asp:BoundField
DataField="commentaire"
HeaderText="commentaire"
SortExpression="commentaire"
/>

</Columns>

<FooterStyle
BackColor="#507CD1"
Font-Bold="True"
ForeColor="White"
/>

<RowStyle
BackColor="#EFF3FB"
/>

<EditRowStyle
BackColor="#2461BF"
/>

<SelectedRowStyle
BackColor="#D1DDF1"
Font-Bold="True"
ForeColor="#333333"
/>

<PagerStyle
BackColor="#2461BF"
ForeColor="White"
HorizontalAlign="Center"
/>

<HeaderStyle
BackColor="#507CD1"
Font-Bold="True"
ForeColor="White"
/>

<AlternatingRowStyle
BackColor="White"
/>

</asp:GridView>

<asp:SqlDataSource
ID="SqlDataSource1"
runat="server"
ConnectionString="<%$ ConnectionStrings:ldapConnectionString2 %>
"

ProviderName="<%$ ConnectionStrings:ldapConnectionString2.ProviderName %>
"

SelectCommand="SELECT [id], [userid], [date], [projet], [activite], [duree], [commentaire] FROM [cra] WHERE (([date] LIKE '%' + @date + '%') AND ([date] LIKE '%' + @date2 + '%') AND ([userid] = @userid)) ORDER BY [date]"

DeleteCommand="DELETE FROM cra WHERE (id = @original_id)"

UpdateCommand="UPDATE cra SET date = @date, projet = @projet, activite = @activite, duree = @duree, commentaire = @commentaire WHERE (id = @original_id)"

InsertCommand="INSERT INTO [cra] ([userid], [date], [projet], [activite], [duree], [commentaire]) VALUES (@userid, @date, @projet, @activite, @duree, @commentaire)"
OldValuesParameterFormatString="original_{0}">

<SelectParameters>

<asp:ControlParameter
ControlID="DDL_Annee"
Name="date"
PropertyName="SelectedValue"

Type="String"
/>

<asp:ControlParameter
ControlID="DDL_Mois"
Name="date2"
PropertyName="SelectedValue"

Type="String"
/>

<asp:ControlParameter
ControlID="LB_Identifiant"
Name="userid"
PropertyName="Text"

Type="String"
/>

</SelectParameters>

<InsertParameters>

<asp:Parameter
Name="userid"
Type="String"
/>

<asp:Parameter
Name="date"
Type="DateTime"
/>

<asp:Parameter
Name="projet"
Type="String"
/>

<asp:Parameter
Name="activite"
Type="String"
/>

<asp:Parameter
Name="duree"
Type="Double"
/>

<asp:Parameter
Name="commentaire"
Type="String"
/>

</InsertParameters>

<UpdateParameters>

<asp:Parameter
Name="date"
Type="DateTime"
/>

<asp:Parameter
Name="projet"
Type="String"
/>

<asp:Parameter
Name="activite"
Type="String"
/>

<asp:Parameter
Name="duree"
Type="Double"
/>

<asp:Parameter
Name="commentaire"
Type="String"
/>

<asp:Parameter
Name="original_id"
Type="Object"
/>

</UpdateParameters>

<DeleteParameters>

<asp:Parameter
Name="original_id"
Type="Object"
/>

</DeleteParameters>

</asp:SqlDataSource>

<hr
/>

<table
style="width: 100%">

<tr>

<td>

<asp:HyperLink
ID="HyperLink1"
runat="server"
NavigateUrl="~/addCRA.aspx">Cr‚er
</asp:HyperLink></td>

<td
style="text-align: right">

<asp:HyperLink
ID="HyperLink2"
runat="server"
NavigateUrl="~/logout.aspx">Se d‚connecter
</asp:HyperLink></td>

</tr>

</table>

</form>Merci
 
0
gstrit Messages postés 78 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 15 mars 2007
19 mai 2006 à 00:05
Bonjour,


Alors si j'ai bien compris ce que tu veux faire, j'ai peut etre une solution. Enfin c'est peut etre pas tres propre mais àa a le mérite de marcher : 
 
voici le code de la gridview :


<atlas:UpdatePanel
ID="up"
runat="server"
Mode="Conditional"
RenderMode="Inline">








<
ContentTemplate
>






<
asp
:
GridView



ID
="GridView1"



runat
="server"



AllowPaging
="True"



AllowSorting
="True"






AutoGenerateColumns
="False"



CellPadding
="4"



DataKeyNames
="ID"



DataSourceID
="SqlDataSource3"






ForeColor
="#333333"



GridLines
="None"



OnRowDataBound
="GridView1_RowDataBound"






Width
="842px">






<
FooterStyle



BackColor
="#507CD1"



Font-Bold
="True"



ForeColor
="White"



/>






<
Columns
>






<
asp
:
BoundField



DataField
="ID"



HeaderText
="ID"



InsertVisible
="False"



ReadOnly
="True"






SortExpression
="ID"



/>






<
asp
:
BoundField



DataField
="Nom"



HeaderText
="Fournisseur"



ReadOnly
="True"



SortExpression
="Nom"



/>






<
asp
:
BoundField



DataField
="Date de demande"



HeaderText
="Date de demande"



ReadOnly
="True"






SortExpression
="Date de demande"



ApplyFormatInEditMode
="True"



DataFormatString
="{0:dd/MM/yyyy}"



HtmlEncode
="False"



/>






<
asp
:
BoundField



DataField
="Date limite"



HeaderText
="Date limite"



ReadOnly
="True"






SortExpression
="Date limite"



ApplyFormatInEditMode
="True"



DataFormatString
="{0:dd/MM/yyyy}"



HtmlEncode
="False"



/>






<
asp
:
BoundField



DataField
="Explication"



HeaderText
="Explication"



ReadOnly
="True"






SortExpression
="Explication"



/>






<
asp
:
BoundField



DataField
="Prix"



HeaderText
="Prix"



ReadOnly
="True"



SortExpression
="Prix"



/>






<
asp
:
TemplateField



HeaderText
="Date de d&#233;but de travaux">






<
EditItemTemplate
>






&nbsp;






</
EditItemTemplate
>






<
ItemTemplate
>









&nbsp;
<
asp
:
TextBox



ID
="ChosenDate"



runat
="server"



AutoPostBack
="True"



OnTextChanged
="ChosenDate_TextChanged"






Width
="74px"



Text
='
<%# Bind("Date", "{0:d}") %>

'></
asp
:
TextBox
><
asp
:
ImageButton



ID
="ShowDatePickerPopOut"



runat
="server"






Height
="20px"



ImageUrl
="~/Admin/images/icon-calendar.gif"



OnClick
="ShowDatePickerPopOut_Click"






Width
="20px"



CausesValidation
="False"



/>






<
br



/>






<
asp
:
RequiredFieldValidator



ID
="RequiredFieldValidator1"



runat
="server"



ControlToValidate
="ChosenDate"






Display
="Dynamic"



ErrorMessage
="Veuillez renseigner une date !"



Width
="151px"></
asp
:
RequiredFieldValidator
>






</
ItemTemplate
>






</
asp
:
TemplateField
>






<
asp
:
TemplateField



HeaderText
="Bon de commande">






<
ItemTemplate
>






&nbsp;
<
asp
:
LinkButton



ID
="LinkButton2"



runat
="server"



Text
="Imprimer"



CausesValidation
="False"



OnClick
="LinkButton2_Click"></
asp
:
LinkButton
>






</
ItemTemplate
>






</
asp
:
TemplateField
>






<
asp
:
CommandField



ButtonType
="Image"



CancelImageUrl
="~/Admin/images/icon-cancel.gif"






DeleteImageUrl
="~/Admin/images/icon-delete.gif"



EditImageUrl
="~/Admin/images/icon-edit.gif"






SelectImageUrl
="~/Admin/images/plus.gif"



ShowSelectButton
="True"






UpdateImageUrl
="~/Admin/images/icon-save.gif"



/>






</
Columns
>






<
RowStyle



BackColor
="#EFF3FB"



HorizontalAlign
="Center"



/>






<
EditRowStyle



BackColor
="LightCyan"



/>






<
SelectedRowStyle



BackColor
="#D1DDF1"



Font-Bold
="True"



ForeColor
="#333333"



/>






<
PagerStyle



BackColor
="#2461BF"



ForeColor
="White"



HorizontalAlign
="Center"



/>






<
HeaderStyle



BackColor
="#507CD1"



Font-Bold
="True"



ForeColor
="White"



/>






<
AlternatingRowStyle



BackColor
="White"



/>






</
asp
:
GridView
>






</
ContentTemplate
>






</
atlas
:
UpdatePanel
>

Le code du calendrier :

<

atlas:UpdatePanel
ID="up1"
runat="server"
Mode="Conditional"
RenderMode="Inline">

<ContentTemplate>

<asp:Panel
ID="DatePickerPopOut"
runat="server"
CssClass="popupMenuHidden"
style="left: 400px; top: 100px">

<asp:Calendar
ID="CalendarPicker"
runat="server"
BackColor="White"
BorderColor="#999999"

CellPadding="4"
DayNameFormat="Shortest"
Font-Names="Verdana"
Font-Size="8pt"

ForeColor="Black"
Height="180px"
Width="200px"
OnSelectionChanged="CalendarPicker_SelectionChanged1">

<SelectedDayStyle
BackColor="#666666"
Font-Bold="True"
ForeColor="White"
/>

<TodayDayStyle
BackColor="#CCCCCC"
ForeColor="Black"
/>

<SelectorStyle
BackColor="#CCCCCC"
/>

<WeekendDayStyle
BackColor="#FFFFCC"
/>

<OtherMonthDayStyle
ForeColor="#808080"
/>

<NextPrevStyle
VerticalAlign="Bottom"
/>

<DayHeaderStyle
BackColor="#CCCCCC"
Font-Bold="True"
Font-Size="7pt"
/>

<TitleStyle
BackColor="#999999"
BorderColor="Black"
Font-Bold="True"
/>

</asp:Calendar>

<br
/>

<asp:LinkButton
ID="CloseDatePickerPopOut"
runat="server"
Font-Names="Tahoma"
Font-Size="small"

OnClick="Close_Click"
ToolTip="Close Pop out"
CausesValidation="False">Close

</asp:LinkButton></asp:Panel>

</ContentTemplate>

</atlas:UpdatePanel>

Le code javascript :

function

valeur(nb) {

document.getElementById(

"ctl00_maincontent_HiddenField2").value = nb; }

Il faut créer un hiddenfield.

Et enfin le code behing :

protected
void GridView1_RowDataBound(
object sender,
GridViewRowEventArgs e){

if (e.Row.DataItemIndex == -1)

return;((

ImageButton)e.Row.FindControl(
"ShowDatePickerPopOut")).OnClientClick =
"javascript:valeur(" + e.Row.RowIndex +
");";}

protected
void ChosenDate_TextChanged(
object sender,
EventArgs e){

TextBox text = (
TextBox)
this.GridView1.Rows[
int.Parse(
this.HiddenField2.Value)].FindControl(
"ChosenDate");

DateTime dt =
new
DateTime();

DateTime.TryParse(text.Text,
out dt);CalendarPicker.SelectedDate = dt;

CalendarPicker.VisibleDate = dt;

GridViewRow row = (
GridViewRow)text.NamingContainer;

SqlConnection cn =
new
SqlConnection(
ConfigurationManager.ConnectionStrings[
"SiteConnectionString2"].ConnectionString);

cn.Open();

SqlCommand cmd =
new
SqlCommand(

"UPDATE [Demande de prix] SET [Date de d‚but de travaux] = @Date WHERE ID = @ListId", cn);cmd.Parameters.Add(

"Date", dt);cmd.Parameters.Add(

"ListId",
this.GridView1.DataKeys[row.RowIndex].Value);cmd.ExecuteNonQuery();

this.GridView1.DataBind();}

protected
void Close_Click(
object sender,
EventArgs e){

DatePickerPopOut.CssClass =

"popupMenuHidden";}

protected
void ShowDatePickerPopOut_Click(
object sender,
ImageClickEventArgs e){

this.DatePickerPopOut.CssClass =
"popupMenu";

this.up1.Update();}

protected
void CalendarPicker_SelectionChanged(
object sender,
EventArgs e){

SetDateSelectionAndVisible();

}

private
void SetDateSelectionAndVisible(){

TextBox text = (
TextBox)
this.GridView1.Rows[
int.Parse(
this.HiddenField2.Value)].FindControl(
"ChosenDate");text.Text = CalendarPicker.SelectedDate.ToShortDateString();

DatePickerPopOut.CssClass =

"popupMenuHidden";

this.up.Update();}

protected
void LinkButton1_Click(
object sender,
EventArgs e){

this.Panel2.CssClass =
"popupMenuHidden";

this.UpdatePanel2.Update();

}

protected

void LinkButton3_Click(
object sender,
EventArgs e){

this.Panel2.CssClass =
"popupMenuHidden";

this.UpdatePanel2.Update();}

protected
void CalendarPicker_SelectionChanged1(
object sender,
EventArgs e){

SetDateSelectionAndVisible();

}

Et bien sur le morceau de code css àappilquer au panel :

.popupMenuHidden

{

position:
absolute;

visibility:
hidden;

overflow:
hidden;}

.popupMenu

{

position:
absolute;

overflow:
hidden;

}
 Alors là le calendrier s'affiche lors de l'appuie sur un bouton mais il suffit de s'abonner à l'evenement onfocus()ou un truc du genre sur la textbox.

Pour expliquer brievement le code, lors du binding du gridview on renseigne la propriété onclientclick qui va appeler une fonction javascript qui va stocker dans le hiddenfield la ligne courante. On recupere par la suite la ligne courante afin de faire un findcontrol sur cette ligne. De cette maniere on est capable de dire kel textbox on veut.

Voilà j'espere que j'ai été clair et que ça te sera utile

@+

Louis
0
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006
19 mai 2006 à 13:24
Coucou,

Je voudrais savoir, en faites j'ai vu d'ou vener mon probleme de modification!
J'ai mon champs Date, mon champs projet, mon champs activite.
J'ai essayer de faire la modification en changeant un par un les champs.
Il s'avere que pour la date il n'y a pas de probleme, pour la date et le projet il n'y a pas de probleme.
Le probleme viens du champs activite!!
En faites le champs projet qui est affiché sous DDL affiche les differents projet.
Puis je souhaite que le champs activite affiche dans une DDL , les activites concernant le projet choisi.
Et c'est au niveau de cette liaison qu'il y a un probleme...
J'ai essayé de lié les DDL en dehors du GridView puis de les glisser dans leur edittemplate mais sa ne marche pas.
J'ai essayé de faire les DDL directement dans les Edittemplate mais apres dans la DDL activite, au niveau de la clause WHERE, il ne me propose pas de faire WHERE [mailto:projet=@projet projet=@projet] avec @projet comme DDL_projet.SelectedValue!! Il me propose seulement GridView1.
Si tu as deja reussi a faire une liaison dans un GridView de 2 DDL ou si tu vois la solution, je susi preneur :d
Une idée???
0
Rejoignez-nous