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 回答