2010-12-02 84 views
0

我已经在C#中为Sharepoint 2007编写了一个Web部件,该部件包含一个使用RequiredFieldValidator()验证为必填字段的单个字段。 Web部件还具有一些配置字段(通过单击修改共享Web部件编辑的字段)。Sharepoint Web部件表单验证块更新Web部件设置

当我对这些字段进行更改并尝试应用它们时,即使我没有提交表单,用户字段的验证也会启动并阻止更新。我只是想提交设置。 Web部分可能会在我们的农场的一些地方使用,因此网站集管理员需要能够更改设置 - 目前它对这些用户来说不够友好。

这里是我验证用户字段:

// 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 = "[email protected]"; 
    [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

好的 - 我找到了这个关键。您可以将validationGroup属性添加到每个验证程序以及导致验证的按钮。所以我改变了我的代码,包括:

messageRequiredValidator.validationGroup = "UserInput"; 

和我的提交按钮类似的属性。现在,当我在ToolPane中单击确定时,它不会验证UserInput验证组。只有当我点击我的提交按钮时才会发生这种情况。

1

您可以动态地确定禁用验证,取消按钮ApplyChanges方法:

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

,或者您也可以检查,如果编辑窗格打开和关闭验证的Web部件:

的WebPartManager每分钟= WebPartManager的。 GetCurrentWebPartManager(页);

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

我想在设置Web部件时验证编辑器窗格字段 - 这是否也禁用了? – dunxd 2010-12-10 11:10:41

1

我会建议使用SharePoint validation control

+0

我已经更改了代码以使用这些不同的验证器控件(和更新后的问题),但出现同样的问题 - 更改Web部件设置字段时,公共字段的验证会启动。 – dunxd 2010-12-10 11:09:17