У меня проблема с отображением нескольких команд sql в одном GridView. Может быть, мне не нужны две sqlcommands для отображения из двух таблиц, но я не знаю, как это сделать. Первая команда — получить всех сотрудников, у которых есть отпуск между двумя датами. Вторая команда, которую я использую для получения дат по идентификатору. Но я не знаю, как связать их обоих с одним GridView, чтобы показать как прикрепленное изображение. Заранее спасибо.
Сейчас я получаю следующее:
Альберт 16-03-2016
Альберт 17-03-2016
Альберт 18-03-2016
Джоанна 17-03-2016
Джоанна 18.03.2016
Эрик 18.03.2016
Вместо
Альберт 16-03-2016, 17-03-2016, 18-03-2016
Джоанна 17-03-2016, 18-03-2016
Эрик 18-03-2016
Я думаю, что мне нужно зацикливаться между двумя состояниями While и, возможно, с одной командой sql?
Мой код:
using (SqlConnection con = new SqlConnection(connection))
{
con.Open();
SqlCommand cmd = new SqlCommand(" SELECT distinct E.EmployeeId, E.FirstName
FROM Employee E INNER JOIN Vacation V ON E.EmployeeId = V.EmployeeId " +
" WHERE ((V.Dates >= @Start AND V.Dates <= @End) ) ", con);
cmd.Parameters.AddWithValue("@Start", (Calendar1.SelectedDates[0]).Date.ToShortDateString());
cmd.Parameters.AddWithValue("@End", (Calendar1.SelectedDates[Calendar1.SelectedDates.Count - 1]).Date.ToShortDateString());
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
Response.Write((dr[1]).ToString() + " "); // Cheack if retrivs Employeename
// Now By Id I want to get all dates belong to specifik employee
SqlCommand cmd2 = new SqlCommand(" SELECT V.Dates FROM Vacation V " +
" WHERE ((V.Dates >= @Start AND V.Dates <= @End) ) ", con);
cmd2.Parameters.AddWithValue("@Start", (Calendar1.SelectedDates[0]).Date.ToShortDateString());
cmd2.Parameters.AddWithValue("@End", (Calendar1.SelectedDates[Calendar1.SelectedDates.Count - 1]).Date.ToShortDateString());
cmd2.Parameters.AddWithValue("@EmployeeId", Convert.ToInt32(dr[0]));
using (SqlDataReader dr2 = cmd2.ExecuteReader())
{
while (dr2.Read())
{
//Response.Write(Convert.ToDateTime(dr2[0]));
GridView7.DataSource = cmd2.ExecuteReader();
GridView7.DataBind();
}
}
Response.Write("<br/>");
}
}
con.close();
}
GridView7.DataSource = cmd.ExecuteReader();
GridView7.DataBind();