Чаму ні адзін з маіх элементаў кіравання не адлюстроўваюцца на панэлі пры спробе выцягнуць яго з-пад кантролю асіны

Таму ў мяне ёсць дынамічна пабудаваная табліца, якая ствараецца з дапамогай метаду і загружанай ў панэль, якая дзейнічае як трымальнік для яго месца і пры загрузцы яго ў старонку, ён выдатна працуе, калі я загрузіць старонку. Табліца прыдумляе і загружае дакладна, як я хачу, каб гэта. Мая адзіная праблема ў тым, што ў мяне ёсць два Dropboxes, якія маюць опцыю карыстальнік выбірае абнавіць тыя слупкі табліцы с. Праблема ў тым, што, калі я іду і націсніце маю кнопку абнаўлення, ён шукае старонку для адпаведнага ўпраўлення (гэта значыць значэння ў Dropboxes), які павінен атрымаць адпаведнае значэнне для абнаўлення табліцы, з якой будзе растлумачана ніжэй.

Гэта тое, што я раблю з маёй кнопкай абнаўлення:

        protected void Update_Click(object sender, EventArgs e)
    {
      UpdateFail.Visible = false;
      UpdateSucceed.Visible = false;
      string MachineTypeID;
      string MachineModelID;
      string machinetypeid;
      string machinemodelid;
      int i = 0;
      machine = inputsService.GetMachineSiteDetails(SiteID);
      foreach (Machine Machine in machine)
      {
          try
          {                  
              machinetypeid = Machine.ID.ToString() + "type";
              machinemodelid = Machine.ID.ToString() + "model";
              Control type = MyExtensions.FindControlRecursive(this, machinetypeid);
              Control model = MyExtensions.FindControlRecursive(this, machinemodelid);
              RadComboBox machinetype = (RadComboBox) type;
              RadComboBox machinemodel = (RadComboBox) model;
              MachineTypeID = machinetype.SelectedValue;
              MachineModelID = machinemodel.SelectedValue;
              if (MachineTypeID != "")
              {
                  inputsService.UpdateMachineModels(Machine.ID, MachineModelID);
                  i++;
              }
              if (MachineModelID != "")
              {
                  inputsService.UpdateMachineTypes(Machine.ID, MachineTypeID);
                  i++;
              }
          }
          catch (Exception ex)
          {
              {
                  logger.ErrorFormat(
                      "Update_Click exception occurred when attempting to update the database {0}", ex);
              }
          }
      }
      if (i != 0)
      {
          UpdateFail.Visible = false;
          UpdateSucceed.Visible = true;
      }
      else
      {
          UpdateSucceed.Visible = false;
          UpdateFail.Visible = true;
      }
      //clear out the old table and replace with the newly revized table.
      AddTable();
    }

Цяпер мая праблема звязаная з двума радкамі кода ніжэй

                  Control type = MyExtensions.FindControlRecursive(this, machinetypeid);
              Control model = MyExtensions.FindControlRecursive(this, machinemodelid);

Метад MyExtensions.FindControlRecursive() заключаецца ў наступным:

        public static Control FindControlRecursive( Control root, string id )
    {
        System.Web.UI.Control controlFound;
        if ( root != null )
        {
            controlFound = root.FindControl( id );
            if ( controlFound != null )
                return controlFound;
            foreach ( Control c in root.Controls )
            {
                controlFound = FindControlRecursive( c, id );
                if ( controlFound != null )
                    return controlFound;
            }
        }
        return null;
    }

Update1 What it is doing is when it gets to the findcontrol method, it can't find the table within the pannel so it returns null and fails to update the table.

Што я хацеў бы ведаць, з'яўляецца тое, што я раблю няправільна тут і як я магу вырашыць гэтую праблему?

Любая дапамога ці прапановы вялікія ацэнены.

Дзякуй

0
Вы на самой справе не растлумачыць, што ён робіць/не робіць.
дададзена аўтар James Johnson, крыніца

2 адказы

Калі вы ствараеце табліцу? Калі вы ствараеце табліцу дынамічна, ён не павінен быць ўзноўлены не пазней OnInit для ViewState, каб быць у стане аднавіць.

1
дададзена

Чаму б вам не паспрабаваць гэтую рэкурсіўная панэль пошуку:

public static Control FindControlRecursive(this Control Root, string Id)
{
    if (Root.ID == Id)
        return Root;

    foreach (Control Ctl in Root.Controls)
    {
        Control FoundCtl = FindControlRecursive(Ctl, Id);
        if (FoundCtl != null)
            return FoundCtl;
    }

    return null;
}

Што Шай таксама сказаў, важна - ваша табліца узнаўляецца/ініцыялізуецца дадзеных і карыстацкага ўводу перад тым, як атрымаць доступ да яго ў метадзе Update?

1
дададзена