понедельник, 4 июня 2012 г.

Пример кастомной web-части MS Sharepoint для работы со списками с использованием Ajax

Пришлось тут мне по работе поразбираться с чудом современного сайтостроения - MS Sharepoint 2010. Пару раз сломал себе голову об стену, пока начал понимать, что там к чему, да и в сети на русском языке качественной информации не так уж и много, поэтому решил написать эту статейку. Если никому не понадобиться, то, по крайней мере, для себя - чтобы не забыть.
Итак, начнем. 

Задача

Создать web-часть, позволяющую добавлять элементы в список и отображать текущее состояние списка, при чем всё это должно происходить через ajax.

Решение

Первым делом, в Sharepoint создаем список с нужным нам именем и полями. В данном примере будем рассматривать список с названием SampleList и единственным полем Title (в русской версии Наименование) - это поле дефолтное, есть во всех создаваемых списках, поэтому создавать его нам самим не нужно.
Далее, в Visual Studio 2010 создаем новый проект с типом Visual Web Part. Далее, в файле VisualWebPart1UserControl.ascx создаем следующую разметку:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:GridView ID="SampleListView" runat="server">
        </asp:GridView>
        <asp:TextBox ID="NewItemTitle" runat="server"></asp:TextBox><br/>
        <asp:Button ID="uxSubmit" runat="server" onclick="uxSubmit_Submit" Text="Добавить" />
        <asp:Label ID="IbIResult" runat="server" Text="Ajax"></asp:Label>
    <!-- Ajax ends here with -->
    </ContentTemplate>
</asp:UpdatePanel>  
Здесь элемент UpdatePanel указывает границы области, которая будет обновлена при ajax-запросе, элемент SampleListView - таблица, в которую будет выводиться текущее состояние списка, NewItemTitle - текстовое поле, в которое мы будем вводить наименование нового элемента списка, uxSubmit - кнопка сабмита, по нажатию на которую будет отправляться нужный ajax-запрос на сервер, IbIResult - надпись (lable), в которую будем писать результат выполнения запроса.
Теперь переходим к реализации алгоритма обработки всего этого дела. Писать код будем на C#, итак в файле VisualWebPart1UserControl.ascx.cs в класс VisualWebPart1UserControl нужно добавить следующий код:
// Обрабатывает нажатие кнопки "Добавить"
protected void uxSubmit_Submit(object sender, EventArgs e){
    try
    {
 
        // Добавим новый элемент в список
        AddListItem(NewItemTitle.Text);
        // Почистим поле с наименованием
        NewItemTitle.Text = "";
        // Обновим таблицу, отображающую текущее состояние списка
        UpdateSampleListView(); 
        // Выведем результат выполнения операции 
        IbIResult.Text = "Submitted created!";
    }
    catch (Exception ex)
    { 
        // Если словили исключение выведем в результат операции
        // информацию об исключении
        IbIResult.Text = "Task failed" + ex.Message;
    }
}
 
//Обновляет представление списка
private void UpdateSampleListView()
{
    // Получаем из контекста текущий сайт
    SPSite site = SPContext.Current.Site;
    using(SPWeb web = site.OpenWeb())
    {
        // Получим нужный нам список
        SPList SampleList = web.Lists["SampleList"]; 
        // Объявим коллекцию, в которой будем хранить элементы списка
        List<string> SampleListCollection = new List<string>();
        // Пробежим по каждому элементу списка 
        foreach (SPListItem curItem in SampleList.Items)
        { 
            // Добавим значение поля Title текущего элемента списка
            // в коллекцию 
            SampleListCollection.Add(curItem.Title);
        }
 
        // Привяжем источник данных к DataGrid'у 
        SampleListView.DataSource = SampleListCollection; 
        // Выведем в DataGrid всю коллекцию
        SampleListView.DataBind();
    }
}
 
// Добавляет элемент в список
private void AddListItem(string NewItemTitle)
{
    // Получаем из контекста текущий сайт 
    SPSite site = SPContext.Current.Site;
    using (SPWeb web = site.OpenWeb())
    {
        // Получим нужный нам список
        SPList SampleList = web.Lists["SampleList"]; 
        // Создадим новый элемент списка
        SPListItem newItem = SampleList.AddItem(); 
        // Заполним поля нового элемента
        newItem["Title"] = NewItemTitle;
        // Запишем изменения 
        newItem.Update();
    }
}
Вот, собственно, и всё. В коде нет ничего сложного, к тому же, он подробно прокомментирован. Пример, конечно, довольно искусственный, но для того, чтобы понять основные принципы работы со списками, я думаю, его будет достаточно

понедельник, 14 февраля 2011 г.

Освоение Mercurial на практике. Основные процессы. Часть 2 - Одиночная разработка с нелинейной историей

Пример использования

Второй возможный рабочий процесс, так же очень простой: Вы разработчик-одиночка и хотите использовать Mercurial, чтобы отслеживать изменения, внесенные вами.

Это работает так же, как и процесс хранения истории (логов), но с одним отличием: Вы можете время от времени возвращаться к ранее сделанным изменениям

Чтобы начать новый проект, вам нужно инициализировать репозиторий, добавить файлы и делать коммиты (фиксации, commits) Каждый раз, когда вы заканчиваете какую-либо часть вашей работы

Так же, время от времени, вам нужно будет просматривать историю, чтобы посмотреть, на сколько вы продвинулись.

пятница, 29 октября 2010 г.

Освоение Mercurial на практике. Основные процессы. Часть 1 - Хранение Логов

Эта статья открывает собой цикл статей, являющихся переводом официального руководства по Mercurial. Итак к делу:

При помощи Mercurial вы можете использовать множество различных процессов. Эта статья расскажет о некоторых из них, включая примеры практического применения. Она предназначена для начинающих работу с системами контроля версий и позволит начать работу мгновенно и последовательно обучаться. В ней вы не найдете глубокого объяснения употребляемых понятий, поскольку есть другие большие ресурсы, на которых они описаны, например wiki и the hgbook.

Если вам необходимо более исчерпывающее руководство по основам Mercurial, то обратите свое внимание на wiki-руководство. Для по-настоящему глубокого и детального восприятия посмотрите книгу Mercurial: Полное руководство.


Примечание: Данное руководство не требует каких-либо предварительных знаний о системах контроля версий (хотя пользователи Subversion, вероятно, почувствуют себя как дома довольно быстро). Будут полезными знания основ работы с командной строкой, потому что мы будем использовать в основном её.

суббота, 14 ноября 2009 г.

Очеловечивание Outlook Express. Часть IV

Получение почты через Proxy-сервер

Если на вашем компьютере используется непрямое подключение к интернету (подключение через другой компьютер, на котором установлен прокси-сервер, по локальной сети), то заставить Outlook получить почту ранее описанными методами вы вряд ли сможете. Для этого существуют специальные приемы.