2010-12-11 18 views
2

J'ai deux zones de texte avec calendarextender et une étiquette. La première zone de texte représente la date de début et la deuxième zone de texte représente la date de fin. L'étiquette représente le nombre de jours restants. Le problème que j'ai, c'est que si je choisis une date de fin, je veux désactiver toutes les dates antérieures à la date de début, en utilisant l'un des scripts côté client ou Server Side Script ....... Mais Calculez le Date de début et date de fin et stockez-la dans (Étiquette) AUCUN jours de congé pour celui-ci j'ai besoin du manuscrit de côté de serveur seulement.Désactivation de la date précédente dans l'extension de calendrier Utilisation de n'importe quel script côté client OU côté serveur

Exemple: Date de début est 11-12-2010 et date de fin est 14-12-2010, le Days No.Of congé est 4.

Quelqu'un peut-il s'il vous plaît aidez-moi ...... je m nouveau dans Asp.net ........

Répondre

0

Je n'ai jamais utilisé l'extension du calendrier Ajax, mais j'ai lu quelques-uns là-dessus est donc une photo:

Faire la logique pour limiter la les dates du côté serveur seraient probablement les plus faciles. Mais au meilleur de ma connaissance, CalendarExtender n'autorise pas les événements côté serveur. Mais un moyen de contourner cela est d'ajouter un bouton caché: asp et un champ caché à votre page et utilisez l'événement OnClientDateSelectionChanged pour le premier CalendarExtender pour stocker la date et fake un clic sur le bouton appelant une méthode code-behind.

function dateClickEvent(sender, args) 
{  
    document.getElementById('MyHiddenField').value = sender.get_selectedDate(); 
    (document.getElementById('HiddenDateBtn')).click();  
} 

Le balisage pour le bouton et le champ étant quelque chose comme ceci:

<asp:HiddenField ID="MyHiddenField" runat="server" />  
    <asp:Button ID="HiddenDateBtn" runat="server" Text="Click" Visible="false" 
style="display:none" OnClick="HiddenDateBtn_Click" /> 

Si vous utilisez alors un RangeValidator et un ValidatorCalloutExtender vous pouvez définir la plage pour la deuxième extension de date dans le code-behind .

//In your code-behind 
protected void HiddenDateBtn_Click(object sender, EventArgs e) 
{ 
    string firstDate = MyHiddenField.Value; 
    SecondDateRangeValidator.MinimumValue = firstDate; 
} 

Et le code .aspx au validateur doit être quelque chose comme:

<asp:RangeValidator ID="SecondDateRangeValidator" runat="server" 
       ControlToValidate="SecondDateTextBox" ErrorMessage="RangeValidator" 
       Type="Date"> 
</asp:RangeValidator> 
<ajaxToolkit:ValidatorCalloutExtender ID="SecondDateRangeValidator_ValidatorCalloutExtender" 
       runat="server" Enabled="True" TargetControlID="SecondDateRangeValidator"> 
</ajaxToolkit:ValidatorCalloutExtender> 

Je n'ai pas essayé ce code moi-même :) Il suffit de mettre ensemble après quelques googler et de la lecture. J'espère que ça aide.