среда, 1 февраля 2012 г.

Зафиксировать время открытия элемента на просмотр или редактирование

Стояла задача фиксировать когда задача открывается на просмотр или редактирование, чтобы узнать время реакции тех службы. Строка запроса открытия элемента на просмотр выглядит так - http://site/Lists/List3/DispForm.aspx?ID=1&Source=http%3A%2F%2Fmostest%2FLists%2FList3%2FAllItems%2Easpx&ContentTypeId=0x010800E66FD0C39AF92E428858B862C23B2CE6
Соответственно по параметру ID мы можем узнать id элемента который открыт. Для того чтобы фиксировать время я добавил поле (), написал web-part:

protected void Page_Load(object sender, EventArgs e)
        {
            string id = Request.QueryString["ID"];
            using (SPSite oSite = new SPSite("http://site"))
            {
                using (SPWeb oWeb = oSite.OpenWeb())
                {
                    oWeb.AllowUnsafeUpdates = true;
                    if (id != null)
                    {
                        SPList oList = oWeb.Lists["Задачи"];
                        SPListItem item = oList.GetItemById(int.Parse(id));
                        DateTime nowDate = DateTime.Now;
                        if (item["Time"] == null)
                        {
                            item["Time"] = nowDate;
                            item.Update();
                        }
                    }
                    oWeb.AllowUnsafeUpdates = false;
                }
            }
        }

Далее заходим в список Задачи, нажимаем изменить веб-часть формы и выбираем форма просмотра


И добавляем наш web-part, так же добавляем этот web-part и на форму редактирования. Так как стоит проверка на null if (item["Time"] == null), то при следующем открытии формы время не перезаписывается.



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

Отправить комментарий