Стол Bind Pivot для Gridview - PullRequest
       9

Стол Bind Pivot для Gridview

2 голосов
/ 08 июня 2011

Я разрабатываю учетное приложение (asp.net с сервером VB + sql), чтобы позволить пользователю вводить запись смены, предлагаемый экран выглядит следующим образом:

пример экрана: http://i326.photobucket.com/albums/k421/joeyan829/asp/SMW-1-1.jpg

для структуры базы данных каждый сотрудник будет иметь одну запись в день.

Имя столбца:

staff_key, shift_date, start_time, end_time, shift_patten, SL, VL,ML, PH, APH и т. Д.

пример данных:

123, 23-5-2011, 9:00, 17:00, A, N, N, N, N, N

123, 24-5-2011, 12:00, 19:00, B, N, N, N, N, N

123, 25-5-2011, 12:00, 19:00, B, N, N, N, N, N

Я знаю, что мне нужно использовать сводную таблицу, а затем привязать ее к gridview,

пример

(Питер, COII) 23/5 в столбце 1, (Питер, COII) 24/5 в столбце 2 ..... для строки 1

SQL Server оператор:

select troster.staff_key, shift_date, start_time, end_time, 
shift_type, SL, VL, ML, PH, APH 
from
troster 
right join 
hris_leave.dbo.tstaff 
on 
hris_leave.dbo.tstaff.staff_key=troster.staff_key
where 
troster.shift_date 
in 
('5/23/2011', '5/24/2011', '5/25/2011', '5/26/2011', 
'5/27/2011', '5/28/2011', '5/29/2011')

Но я до сих пор не знаю, как изменить / написать вышеупомянутый SQL, чтобы он стал сводной таблицей и функцией, чтобы связать его с gridview.

1 Ответ

1 голос
/ 08 июня 2011

Я не думаю, что вы должны стремиться к прямому отображению между запросом к базе данных и сеткой. Вместо этого постройте сетку ячейка за ячейкой на основе набора результатов запроса, отфильтрованного по неделе.

Это можно сделать с помощью ASP.NET GridView, но это ни в коем случае не является чистым решением. Я бы использовал планировщик и, если он недоступен, собрал его из элементов HTML и простых элементов управления asp.net.

В Gridview основной структурой является сетка из девяти столбцов, где метки заголовков столбцов для дат рассчитываются на основе выбранной недели. Источник данных GridView будет иметь одну строку для каждого сотрудника со всеми необходимыми данными (staff_key, name) и, возможно, ключами даты для столбцов даты.

В событии RowDataBound вы должны использовать пару (staff_key, date_key) для поиска данных ячейки. Запросы в памяти, такие как LINQ to objects или запросы структуры данных ADO.NET, должны подойти для этого, но вы должны минимизировать количество запросов к базе данных и загружать еженедельные данные один раз.

Наличие редактируемых ячеек делает управление сеткой более сложным, поскольку вам потребуется TemplateFields в столбцах даты с ItemTemplate и EditItemTemplate.

...