Проверка формы веб-части Sharepoint блокирует обновление настроек веб-части - PullRequest
0 голосов
/ 02 декабря 2010

Я написал веб-часть на C # для Sharepoint 2007, в которой есть одно поле, которое проверяется как обязательное поле с помощью RequiredFieldValidator(). В веб-части также есть несколько полей конфигурации (те, которые вы редактируете, нажимая на Изменить общую веб-часть).

Когда я вносю изменения в эти поля и пытаюсь их применить, проверка пользовательского поля запускается и предотвращает обновление, даже если я не отправляю форму. Я только пытаюсь отправить настройки. Веб-часть может использоваться в нескольких местах на нашей ферме, поэтому администраторы семейства сайтов должны иметь возможность изменять настройки - в настоящее время эти пользователи недостаточно дружелюбны для этого.

Здесь я проверяю поле пользователя:

// Validate form field - required field, and max length is 100 characters.
InputFormRequiredFieldValidator messageRequiredValidator = new InputFormRequiredFieldValidator();
messageRequiredValidator.ControlToValidate = txtMessage.ID;
messageRequiredValidator.ErrorMessage = "You must write a message to send!";
messageRequiredValidator.Display = ValidatorDisplay.Dynamic;
messageRequiredValidator.Text = "<img src=\"/_layouts/images/CNSCA16.gif\"/> You must write a message to send.";
tc.Controls.Add(messageRequiredValidator);

Здесь я определяю одно из полей конфигурации:

private string recipientEmailAddress = "sender@domain.tld";
    [WebBrowsable(true),
    Personalizable(true),
    WebPartStorage(Storage.Shared),
    WebDescription("Email address the form should be sent to"),
    WebDisplayName("Recipient Email Address"),
    SPWebCategoryName("Email Settings")]
    public string RecipientEmailAddress
    {
        get { return recipientEmailAddress; }
        set { recipientEmailAddress = value; }
    }

Это первая веб-часть, которую я написал, поэтому могут быть некоторые тонкости, которые я упускаю при настройке администратором и проверке полей, отправленных пользователем.

Ответы [ 3 ]

4 голосов
/ 10 декабря 2010

Хорошо, я нашел ключ к этому.Вы можете добавить свойство validationGroup к каждому валидатору и к кнопке, вызывающей валидацию.Поэтому я изменил свой код, включив в него:

messageRequiredValidator.validationGroup = "UserInput";

и свойство, аналогичное кнопке отправки.Теперь, когда я нажимаю Ok на панели инструментов, она не проверяет группу проверки UserInput.Это происходит только тогда, когда я нажимаю на кнопку «Отправить».

1 голос
/ 02 декабря 2010

Я бы предложил использовать элемент управления проверкой SharePoint .

1 голос
/ 02 декабря 2010

Вы можете динамически отключать проверки при помощи кнопок OK, Cancel в методе ApplyChanges:

ToolPane pane = Zone as ToolPane;
if (pane != null)
    pane.Cancel.CausesValidation = false;

ИЛИ также можно проверить, открыта ли панель редактора, и отключить проверку в веб-части:

WebPartManager wpm= WebPartManager.GetCurrentWebPartManager (Page);

if (wpm.DisplayMode == WebPartManager.EditDisplayMode)
 {
      //Page is in edit mode
 }
...