Так что у меня есть динамически создаваемая таблица, которая создается методом и загружается в панель, которая выполняет роль заполнителя для нее, и при загрузке ее на страницу она прекрасно работает, когда я загружаю страницу. Стол подходит и загружается именно так, как я хочу. Моя единственная проблема заключается в том, что у меня есть два Dropbox, которые имеют параметры, которые пользователь выбирает для обновления этих столбцов таблицы. Проблема в том, что когда я иду и нажимаю кнопку обновления, он ищет на странице соответствующий элемент управления (то есть значения в выпадающих списках), который получает правильное значение для обновления таблицы, с которой будет объяснено ниже.
Это то, что я делаю с моей кнопкой обновления:
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
Что он делает, так это когда он попадает в метод findcontrol, он не может найти таблицу в панели, поэтому возвращает ноль и не может обновить таблицу.
Что я хотел бы знать, что я здесь делаю неправильно и как я могу решить эту проблему?
Любая помощь или предложения с благодарностью.
Спасибо