我有一个表单HomePage.aspx包含一个空的asp:面板,一个下拉列表让用户选择一个SPFielType …在索引更改,我的HomePage.aspx.cs页面将获取选定的文本,并将加载面板中的用户控件,该用户控件将基于用户选择的spfieldtype生成一个控件和一个调用validateForm()函数的按钮…我的问题是validateForm()中的Page_ClientValidate()函数无法找到验证器,我也尝试过给一个组名,但仍然不工作.
当我将按钮放入我的aspx页面(不是动态呈现)时,它正在验证我的页面(< asp:Button ID =“submitbutton”Text =“验证”runat =“server”/>).
但是当我动态渲染它,不能验证形式.这是我试图做的:
当我将按钮放入我的aspx页面(不是动态呈现)时,它正在验证我的页面(< asp:Button ID =“submitbutton”Text =“验证”runat =“server”/>).
但是当我动态渲染它,不能验证形式.这是我试图做的:
protected override void CreateChildControls() { try { fieldRenderingControl = this.CreateFieldRenderingControl(this.FieldType); this.Controls.Add(fieldRenderingControl); Button button = new Button(); button.UseSubmitBehavior = false; button.Text = "ValidateButton"; button.ID = "ValidateButton"; button.OnClientClick = "validateForm()"; this.Controls.Add(button); requiredFieldValidator newValidator = new requiredFieldValidator(); newValidator.Text = "***"; newValidator.ID = "valideee"; newValidator.EnableClientScript = true; newValidator.Enabled = true; newValidator.SetFocusOnError = true; newValidator.Display = ValidatorDisplay.Dynamic; newValidator.ControlToValidate = fieldRenderingControl.ID; this.Controls.Add(newValidator); } catch (Exception ex) { } }
// CreateFieldRenderingControl()函数将根据用户选择的参数fieldType生成一个控件.
提前致谢.
解决方法
Sharepoint有一个丑陋的怪癖,它可以将Guid指定为控件的id.我看到了由Sharepoint试图将这些Guids用作变量名称生成的JavaScript.这不是很好 – 它会打破脚本 – JavaScript变量名称中不允许使用破折号.我怀疑这是你遇到的问题.而且,我猜这个罪魁祸首是.CreateFieldRenderingControl().看起来该方法正在生成Id …是Id?如果是这样,请尝试用安全的方式覆盖Id,也许只需从Guid中删除破折号.
fieldRenderingControl.ID.Replace("-","");
如果这不是确切的解决方案,希望可以让您指出正确的方向.