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>

//このgrid1のソースであるDataTableには、「日付」という列がありますが、グリッドでは、その日付で平日を表示する必要があります(例:2012年8月20日月曜日)。また、月曜日を定義するTextBox(tbFirstDate)があるので、その情報を使用して残りの平日を計算する必要があります。日付の形式はyyyy-mm-ddです。

私はPostreSQLを使用していますが、これはSQLクエリです。

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

ここに画像の説明を入力してください

この結果をこのようにグリッドで表現したいと思います

ここに画像の説明を入力してください

4

1 に答える 1

2

DateTime's DayOfWeekつまり、基本的にあなたの実際の質問は、指定された最初の曜日までの距離によって値を変更する方法ですか?

次に、この方法を使用できます。

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

たとえば、ユーザーが今日入力して、それTuesdayが週の初めであることを指定するとします。

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); 

デモ: http: //ideone.com/Zk99b

これが当てはまる場合は、のこのメソッドを使用するだけRowDataBoundで、GridViewRowの指定された日付との値に従って手動でGridViewラベルのテキストを設定できます。ラベルへの参照を取得するために使用します。TemplateFieldtbFirstDatedateDataItemGridViewRow.FindControl("LabelID")

于 2012-08-28T16:02:41.870 に答える