Здесь мы расскажем об одном способе создания информера (веб-части) в Visual Studio отображающего список сотрудников у которых в будущем будет день рождения.
Одной из узких мест данной задачи является представление даты дня рождения, по условию это два числа: месяц и день; год обычно скрывается для посторонней публики. Так как дата дня рождения будет хранится в поле списка с типом дата (нам неизвестен год), то в качестве года сохраним произвольный год, но для всех одинаковый, к примеру 2010. Запись будет выглядеть: [1| Роман Иванов | 22.04.2010].
В файле ascx (проекта визуальной части) необходимо разместить следующий код для отображения таблицы.
<b>
Дни рождения
</b>
<SharePoint:SPGridView ID="spGridView" runat="server" AutoGenerateColumns="false" BorderStyle="Dotted">
<HeaderStyle HorizontalAlign="Left" ForeColor="Navy" Font-Bold="true" />
<Columns>
<SharePoint:SPBoundField DataField="User" HeaderText="Сотрудник" FooterStyle-HorizontalAlign="Left" FooterStyle-VerticalAlign="Middle">
</SharePoint:SPBoundField>
<SharePoint:SPBoundField DataField="birthday" HeaderText="Дата" FooterStyle-HorizontalAlign="Left" FooterStyle-VerticalAlign="Middle">
</SharePoint:SPBoundField>
</Columns>
</SharePoint:SPGridView>
Создадим функцию, которая будет делать выборку и передавать данные в SPGridView для дальнейшего их отображения. Добавить эту функцию необходимо в Page_Load:
protected void Page_Load(object sender, EventArgs e)
{
/* произвольный код ... */
show_birthdays();
/* произвольный код ... */
}
Исходный код выборки соответствующих полей приведем ниже:
public void show_birthdays()
{
try
{
DataContext ContactSiteData = new DataContext("http://localhost");
EntityList<СотрудникиКонтакт> contact_0 = ContactSiteData.GetList<СотрудникиКонтакт>("Сотрудники");
DateTime cur_date = new DateTime(2010, DateTime.Now.Month, DateTime.Now.Day);
var query = from сlst in contact_0
where сlst.BirthDayRel > cur_date
orderby сlst.BirthDayRel ascending
select new
{
user = сlst.Фамилия,
birthday = сlst.BirthDayRel.Value,
};
spGridView.DataSource = query;
spGridView.DataBind();
}
catch
{
}
}
Работает алгоритм следующим образом. Из таблицы сотрудников выбираются те сотрудники у которых дата дня рождения (относительно 2010 года) более текущей даты (фиксированной на 2010 год).
