2012-08-28 1 views
0
<asp:GridView ID="grid1" runat="server" AutoGenerateColumns="False"> 

    <Columns> 
     <asp:BoundField DataField='id' HeaderText="Id" Visible="False" /> 
     <asp:BoundField DataField='Name' Visible="True" HeaderText="Full Name"/> 


    <asp:BoundField HeaderText="Monday" /> 
    <asp:BoundField HeaderText="Tuesday" /> 
    <asp:BoundField HeaderText="Wednesday" /> 
    <asp:BoundField HeaderText="Thursday" /> 
     <asp:BoundField HeaderText="Friday" />    
    </Columns> 

</asp:GridView> 

<asp:TextBox ID="tbFirstDate" runat="server"></asp:TextBox> 

// Dans le DataTable qui est la source de cette grid1 j'ai une colonne « date », mais dans la grille-je présenter en semaine avec cette date (ex. Lundi 20.08.2012). J'ai aussi un TextBox (tbFirstDate) qui définit quel jour est lundi, donc en utilisant cette info j'ai besoin de calculer le reste de la semaine, le format de date est aaaa-mm-jjJe veux représenter la semaine dans un gridview

Je travaille avec PostreSQL, ceci est le SQL requête:

SELECT * FROM Table1 
WHERE id1=212 AND date BETWEEN '20.08.2012' AND '24.08.2012' 
ORDER BY date 

enter image description here

maintenant, ce résultat que je veux représenter dans la grille comme celui-ci

enter image description here

+1

Pouvez-vous, s'il vous plaît, illustrer à quoi devrait ressembler votre grille? –

+0

Donc, fondamentalement, votre vraie question est de savoir comment changer une valeur 'DayTime's'' DayOfWeek' d'un nombre de jours spécifié? –

+0

@AmiramKorach J'ai ajouté une image de ma grille, peut-être maintenant c'est plus clair – Alex

Répondre

1

Donc, fondamentalement, votre vraie question est de savoir comment changer une valeur DateTime'sDayOfWeek par sa distance à un premier jour de la semaine?

Ensuite, vous pouvez utiliser cette méthode:

public static int Weekday(DateTime dt, DayOfWeek startOfWeek) 
{ 
    return (dt.DayOfWeek - startOfWeek + 7) % 7; 
} 

Par exemple, en supposant que l'utilisateur est entré aujourd'hui pour préciser que Tuesday est le début de la semaine:

DateTime value = new DateTime(2012, 8, 20); 
DayOfWeek weekday = (DayOfWeek)Weekday(value, DateTime.Now.DayOfWeek); 
Console.Write("normally:{0} changed to:{1}", value.DayOfWeek, weekday); 

Démo: http://ideone.com/Zk99b

Si cela est vrai, vous n'avez qu'à utiliser cette méthode dans RowDataBound du GridView pour définir le texte d'un L abel dans un TemplateField manuellement selon la date spécifiée dans tbFirstDate et la valeur date dans le DataItem du GridViewRow. Utilisez GridViewRow.FindControl("LabelID") pour obtenir une référence à l'étiquette.

+0

Schemelter J'ai ajouté une image de ma grille, peut-être maintenant c'est plus clair – Alex

Questions connexes