2013-05-16 2 views
1

Итак, я возвращаю данные обратной передачи из формы и должен получить значения флажка для группы флажков в родительском элементе управления. Я закодировал его, и он работал, но теперь больше не работает, и я не могу понять, почему. Флажки создаются при загрузке страницы динамически, но при обратной передаче ничего не проверяется, когда в форме были отмечены элементы, единственным событием postback является событие кнопки отправки.Группа флажков, не обнаруженных, если они установлены

   // This is from the btnSubmit Postback event that isn't working anymore 
       foreach (CheckBox cb in ShowPermissions.Controls.OfType<CheckBox>()) 
       { 
        if (cb.Checked) 
        { 
         // Add New Admins Permissions 
         Permission p = new Permission(); 
         p.AdminUserID = au.id; 
         p.AdminMenuID = Convert.ToInt32(cb.ID.ToString().Substring(4)); 
         ngdb.Permissions.InsertOnSubmit(p); 
         submitResult.InnerHtml += cb.ID.ToString(); 
         // Does not run now? 
        } 
        // can see the checkbox object 
       } 


       protected void Page_Load(object sender, EventArgs e) 
      { 
       FunctionType = Request.QueryString["func"] != null && Request.QueryString["func"] != "" ? Request.QueryString["func"] : null; 
       RID = Request.QueryString["rid"] != null && Request.QueryString["rid"] != "" ? int.Parse(Request.QueryString["rid"]) : -1; 

       PopulateAdminTypes(); 

       if (!IsPostBack && FunctionType == "edit" && RID != -1) 
       { 
        // Populate User details for Edit 
        PopulateUser(RID); 
        // Populate checkboxes and check selected options 
        PopulateAdminPermissionOptions(true, RID); 
        // Disable password change 
        ChangePassword(false); 
       } 
       else if (!IsPostBack) 
       { 
        chkChangePassword.Visible = false; 
        PopulateAdminPermissionOptions(false, -1); 
       } 

      } 

       private void PopulateAdminPermissionOptions(bool blnPopulateForEdit, int RID) 
      { 
       // Get Logged in Admin ID 
       int intAdminId = Convert.ToInt32(Session["AdminID"]); 
       int intAdminTypeId = Convert.ToInt32(Session["AdminTypeID"]); 

       using (NewGeorgeDataContext ngdb = new NewGeorgeDataContext()) 
       { 
        var am = ngdb.AdminMenus.AsQueryable(); 
        // Hide Add and Edit Options from Non Super Users 
        var amUsers = ngdb.AdminMenus.Where(x => x.id > 2 && x.id < 5); 
        if (intAdminTypeId > 1) am = am.Except(amUsers); 

        foreach (var m in am.OrderBy(x => x.MenuTypeID).ThenBy(x => x.id)) 
        { 
         // Add New CheckBox 
         CheckBox cb = new CheckBox(); 
         cb.ID = "chk_" + m.id; 
         cb.CssClass = "chkItems"; 
         cb.Text = m.AdminMenuType.Name + ": " + m.Name; 
         // Get Admin Permission objects 
         if (blnPopulateForEdit) 
         { 
          var ap = ngdb.Permissions.SingleOrDefault(x => x.AdminUserID == RID && x.AdminMenuID == m.id); 
          if (ap != null) 
          { 
           cb.Checked = true; 
          } 
         } 
         ShowPermissions.Controls.Add(new LiteralControl("<p>")); 
         ShowPermissions.Controls.Add(cb); 
         ShowPermissions.Controls.Add(new LiteralControl("</p>")); 
        } 
       } 
      } 

Может кто-то тренироваться, что я не вижу атм?

+0

показать свое событие 'Page_Load' – Rahul

+0

Можете ли вы показать' Page_Load' и метод, в котором вы создаете код флажка? – gzaxx

+0

Я добавил событие page_load и метод заполнения флажка – JeffreyJ

ответ

1

Состояние представления не загружается в элементы управления. Вы должны создать все элементы управления перед триггерами LoadViewState. Итак, создайте все динамические элементы управления OnPageInit или Page_Init, чтобы получить правильное поведение. Посмотрите сюда, чтобы получить дополнительную информацию о Asp.NET Page Life Cycle

Надеет, что это поможет вам!

+0

Page_Init метод выполнил задание, проблема решена. Спасибо Fals! – JeffreyJ

Смежные вопросы