2009-01-07 38 views
2

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

这些控件在某些情况下应该基于从db读取的标志进行验证吗?

有没有什么办法可以验证 动态创建的控件?

回答

0

我找到了解决方案。 我在这个页面中遇到的主要问题之一是它支持ajax,我需要验证动态创建的控件。

我的解决方案,它正常工作,同时创建控制,我添加了一个输入属性,它标记它,因为它是否需要,另一个属性,标记它作为一个字段进行验证或不是?

使用JavaScript,我通过与属性“动态控制”,并根据所有输入标签上的“验证attribut”,我确认这一点。很简单,对吧?

示例代码: 而对照创建,标志着它像下面

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;"); 
0

您可以在同一时间创建验证您创建这些控件

+0

我这样做,但没有工作! – Ahmed 2009-01-07 10:10:06

0

当你动态创建的任何控制,也与他们贴所需验证控制,你可以在运行时启用/禁用验证控件。

1

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

如果验证需要一个标志,从数据库中读取,那么也许使用自定义的验证,这将使你建立你的客户端和服务器上的特定逻辑为您的具体验证要求。如果你不想要,你不必提供客户端验证。