Пришлось тут мне по работе поразбираться с чудом современного сайтостроения - 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 нужно добавить следующий код:
Теперь переходим к реализации алгоритма обработки всего этого дела. Писать код будем на 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(); } }
Вот, собственно, и всё. В коде нет ничего сложного, к тому же, он подробно прокомментирован. Пример, конечно, довольно искусственный, но для того, чтобы понять основные принципы работы со списками, я думаю, его будет достаточно
Если кому-то будет нужно, могу выложить готовый проект
ОтветитьУдалитьСпасибо большое. Много стало теперь понятным, жаль что так редко пишешь.
ОтветитьУдалить