OrionXL

Как создать информер о днях рождения сотрудников

Роман Иванов @ 21:44 17.11.2010

Здесь мы расскажем об одном способе создания информера (веб-части) в 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 год).

Отображение информера дня рождения

Отображение информера дня рождения

Комментариев нет

Комментариев нет.

RSS-лента комментариев к этой записи.

Извините, обсуждение на данный момент закрыто.

алгоритмы, методы, программы - OrionXL