2011-05-06 44 views
0

我在asp.net網頁中有面板,並且我在運行時生成複選框.. 我想在表單提交時驗證複選框,必填字段驗證程序。運行時生成的複選框驗證

這裏是我的代碼:

CV =新的CustomValidator();

     cv.ID = "cv" + "_" + dt.Rows[0]["RefQueID"].ToString(); 

         cv.ValidationGroup = "grp"; 
         cv.Display = ValidatorDisplay.None; 

         cv.ErrorMessage = "- Question " + intQuestionNo.ToString(); 
         cv.ClientValidationFunction = "chkCount"; 
         cv.Attributes.Add("rfvid", cv.ID.ToString()); 
         //this portion of code is for custom validation javascript function 
         StringBuilder sb = new StringBuilder(); 
         sb.Append("<script type='text/javascript'> function chkCount(sender,args) { "); 
         sb.Append(" args.IsValid = GetChk(document.getElementById('ctl00_ContentPlaceHolder1_" + cbl.ID.ToString() + "'))"); 
         sb.Append(" } </script>"); 
         Page page = HttpContext.Current.Handler as Page; 
         page.RegisterStartupScript("_Check", sb.ToString()); 

,並在我的javascript函數我回到這一點:

功能GetChk(chkbox,參數){

 if (!isConfirmed) { 
      alert('hi'); 

      var chkBoxList = document.getElementById(chkbox.ClientID); 
      var chkBoxCount = chkBoxList.getElementsByTagName("input"); 

      for (var i = 0; i < chkBoxCount.length; i++) { 
       if (chkBoxCount[i].checked == true) { 
        return true; 
       } 
      } 

      return false; 
     } 
     return true; 
    } 

但林沒有得到複選框的值...

要求值:= ctl00_ContentPlaceHolder1_tc_hospital_improvement_features_tp_Reflection_cbl_116_0

實際值:= ctl00_ContentPlaceHolder1_tc_hospital_improvement_features_tp_complete_stage_chk_confirm

請幫助...

回答

0

首先獲得運行時產生的控制成從類文件代碼隱藏文件。 然後第二次獲得控件屬性後,我們可以驗證checbox列表。

  1. 將控件從類文件中獲取到代碼隱藏文件中。

    CheckBoxList cbl = (CheckBoxList)pnlref.FindControl("cbl_116"); 
    
  2. 向運行時生成的複選框列表提供javascript驗證。

    function GetChk(chkbox, args) { 
        if (!isConfirmed) { 
         var chkBoxList = document.getElementById('ctl00_ContentPlaceHolder1_tc_hospital_improvement_features_tp_Reflection_cbl_116'); 
         var chkBoxCount = chkBoxList.getElementsByTagName("input"); 
         for (var i = 0; i < chkBoxCount.length; i++) { 
          if (chkBoxCount[i].checked == true) { 
           return true; 
          } 
         } 
         return false; 
        } 
        return true; 
    }