Я не уверен, что вам даже нужен C # или Visual Studio.
Ознакомьтесь с введением в SharePoint Designer и рабочие процессы .
Ваш рабочий процесс может выполняться в любом списке - независимо от того, настроен он или нет. Рабочий процесс может фактически запускаться всякий раз, когда изменяется элемент, на котором он выполняется, и это именно то, что вам нужно: всякий раз, когда кто-либо меняет поле «состояние», рабочий процесс запускается и делает все, что ему нужно.
Хорошим примером именно этого является встроенный «рабочий процесс из трех состояний» - вам нужно только активировать эту функцию.
Прочитайте немного о рабочих процессах, чтобы предложить более подробный вопрос. На ваш второй вопрос просто нет ответа, следует ли вам использовать конечный автомат или последовательность операций - это зависит от вашего варианта использования.
В основном вы хотите это:
- Автоматический запуск рабочего процесса при изменении элемента
- Проверка поля "Состояние"
- Переключить состояние поля, если это делает state = "teststate", иначе делать это.