如何验证动态创建的控件?

时间:2009-01-07 09:48:59

标签: asp.net ajax

我有一个asp.net页面,它的一些控件是动态创建的,这些控件是以下之一;文本框,日历或下拉列表。

在某些情况下,这些控件应根据从db读取的标志进行验证?

  

有没有办法验证   动态创建控件?

4 个答案:

答案 0 :(得分:1)

基本上,您需要通过代码创建验证器,并通过代码将它们附加到动态创建的控件上。然后,页面将与您在页面中的验证器一起呈现。

如果验证需要从db读取标志,那么可能使用自定义验证器,它允许您在客户端和服务器上设置特定逻辑以满足特定的验证要求。如果您不想,则不必提供客户端验证。

答案 1 :(得分:0)

您可以在创建这些控件的同时创建验证器

答案 2 :(得分:0)

当您动态创建任何控件时,还要附加所需的Validator控件,您可以在运行时启用/禁用验证器控件。

答案 3 :(得分:0)

我找到了解决这个问题的方法。 我对这个页面的一个主要问题是它启用了ajax,我需要验证动态创建的控件。

我的解决方案并且它正常工作,在创建Control时,我添加了一个输入属性,标记它是否需要,另一个属性标记它是否是要验证的字段?

使用Javascript,我浏览具有属性“动态控制”的所有输入标签,并基于“验证属性”,我验证与否。简单,对吧?

示例代码: 在控制创建时,将其标记为以下

txtBox.Attributes.Add("Type", "T"); // Type of control.
txtBox.Attributes.Add("IsKeyField", "Y"); // Is dynamically created field.
txtBox.Attributes.Add("IsMandatory", "Y");  // Is mandatory or not?

JavaScript代码

            var inputControls = document.getElementsByTagName("input");
            for(var i=0 ; i<inputControls.length ; i++)
            {
                if ( inputControls[i].getAttribute("IsKeyField") == "Y" )                                        
                {
                    if (inputControls[i].getAttribute("Type") == "T" || (inputControls[i].getAttribute("Type") == "C"))
                    {
                        if(inputControls[i].getAttribute("IsMandatory") == "Y")
                        {
                            if(inputControls[i].value == "")
                            {
                                errorMsg += "\n" + inputControls[i].getAttribute("KeyField_Name") + " is required.";
                                isValidated = false;
                            }                            
                        }                         
                    }
                }
            }

当然,您可以在点击所需按钮时调用该代码。

btnUpload.Attributes.Add("onClick", "javascript:if(!ValidateMandatoryFields()) return false;");