从数据库获取考勤记录到gridview ASP.net C#

时间:2016-05-25 15:37:05

标签: c# asp.net sql-server gridview

我使用gridview构建了一个考勤表,用于存储员工在数据库中的出勤情况。我的出勤表就像这样

tblattendance

Att_ID         Emp_ID          Emp_name        Date           Att_status
1               002             xyz           25/05/2016        Absent
2               002             xyz           26/05/2016        Present

现在我想要做的是,我希望在gridview中获取出勤记录,以便显示特定日期到特定日期的某个员工的缺勤和礼物总数。到目前为止,我已经完成了以下代码,但它显示了一行中的缺席和某个员工的第二行中的礼物。我希望它显示在同一行。我还没写过Date的Where条件。

SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = new SqlCommand("SELECT Emp_ID, Emp_name, COUNT(Att_status) AS Astatus FROM tblattendance WHERE Att_status='Absent' AND Emp_ID='2' GROUP BY Emp_ID, Emp_name, Att_status",conn);
            DataTable dt = new DataTable();
            da.Fill(dt);
            SqlDataAdapter da1 = new SqlDataAdapter();
            da1.SelectCommand = new SqlCommand("SELECT COUNT(Att_status) AS Pstatus FROM tblattendance WHERE Att_status='Present' AND Emp_ID='2' GROUP BY Att_status",conn);
            da1.Fill(dt);

            GridView1.DataSource = dt;
            GridView1.DataBind();

在页面加载中完成。

1 个答案:

答案 0 :(得分:0)

假设您的观点是这样的

Emp_Id Emp_name Dates Absent Present

使用以下SQL填充您的视图

select emp_id, emp_name, 'from - to dates' as dates,
sum(case when Att_status = 'Absent' then 1 else 0 end) as [Absent],
sum(case when Att_status = 'Present' then 1 else 0 end) as [Present]
from  [dbo].[tblattendance]
where [date] >= CONVERT(date, '05/25/2016') and [date] <= convert(date, '05/27/2016')
group by emp_id, emp_name

将 - 替换为 - 日期&#39; string by required string,并在where子句中放置日期的下限和上限。我在表格中插入了3条记录,这就是为什么我的上限为05/27/2016。