Создание статистики списка SharePoint - PullRequest
0 голосов
/ 15 декабря 2011

Я совершенно новичок в SharePoint и C #, но я должен сделать то, что мне сейчас говорят: P

В настоящее время я хочу создать веб-часть, которая отображает некоторую статистику статусов проекта.

Мы создали два списка: Один список для проектов Еще один список для ProjectReports

ProjectReport содержит ссылку на проекты

Мы хотим отображать следующее:

Количество проектов со статусом КРАСНЫЙ: $ x Количество проектов со статусом ЖЕЛТЫЙ: $ x Количество проектов со статусом ЗЕЛЕНЫЙ: $ x

Для этого нам нужно только проверить последний проектный отчет о всех проектах.

Текущая идея:

  • Пройти все ProjectStatus
  • С каждой проверкой состояния, существует ли текущий проект в массиве
  • Проверить, является ли текущее состояние более новым, чем состояние, сохраненное в массиве
  • если это так, заменить его, если не продолжить

Хотя я действительно застрял в создании массива, который хочу. Лично я из PHP и мне не нравятся многомерные массивы разных типов: P

Что я сделал:

ArrayList arrayItems = new ArrayList();
foreach(SPListItem item in allData) 
{
   if(arrayItems.Contains(item.GetFormattedValue("Name"))) {
     // later
   } else {
     // Here i need to create the new array, i want to store it like:
     //arrayItems.add("Name", "latestDate");
   }
}

Как видите, и для меня очевидно, что это не работает. Я просто очень сильно разбираюсь в этом.

Было бы замечательно, если бы кто-то мог просто указать мне правильное направление. Что мне нужно искать, это «способ делать то, что я хочу достичь», что-нибудь хорошее вообще, есть ли способ проще, о котором я просто не знаю?

В любом случае, спасибо заранее!

Sam

1 Ответ

1 голос
/ 15 декабря 2011

Было бы намного лучше использовать конструкцию набора ключей, такую ​​как Словарь .

Используя ваш код:

        var cItems = new System.Collections.Generic.Dictionary<string, DateTime>();
        foreach (SPListItem item in allData)
        {
            string sName;
            DateTime dtDate;

            sName = item.GetFormattedValue("Name");
            dtDate = (DateTime)item.GetFormattedValue("latestDate");

            if (cItems.ContainsKey(sName))
            {
                // later
            }
            else
            {
                cItems.Add(sName, dtDate);
            }
        }
...