Я пытаюсь отключить кучу элементов управления с помощью JavaScript (чтобы они отправляли обратно значения). Все элементы управления работают нормально, за исключением моих переключателей, поскольку они теряют свою ценность. В приведенном ниже коде, который вызывается через рекурсивную функцию для отключения всех дочерних элементов управления, Second else (иначе, если (элемент управления RadioButton)) никогда не выполняется, а элемент управления RadioButton идентифицируется как элемент управления Checkbox.
private static void DisableControl(WebControl control)
{
if (control is CheckBox)
{
((CheckBox)control).InputAttributes.Add("disabled", "disabled");
}
else if (control is RadioButton)
{
}
else if (control is ImageButton)
{
((ImageButton)control).Enabled = false;
}
else
{
control.Attributes.Add("readonly", "readonly");
}
}
Два вопроса:
1. Как определить, какой элемент управления является радиокнопкой?
2. Как мне отключить его, чтобы он отправил обратно свое значение?





Я думаю, что вам нужно проверить атрибут "type" флажка, чтобы определить, является ли он переключателем.
Я нашел 2 способа заставить это работать, приведенный ниже код правильно различает элементы управления RadioButton и Checkbox.
private static void DisableControl(WebControl control)
{
Type controlType = control.GetType();
if (controlType == typeof(CheckBox))
{
((CheckBox)control).InputAttributes.Add("disabled", "disabled");
}
else if (controlType == typeof(RadioButton))
{
((RadioButton)control).InputAttributes.Add("disabled", "true");
}
else if (controlType == typeof(ImageButton))
{
((ImageButton)control).Enabled = false;
}
else
{
control.Attributes.Add("readonly", "readonly");
}
}
И решение, которое я использовал, - установить SubmitDisabledControls = "True" в элементе формы, что не идеально, поскольку позволяет пользователю возиться со значениями, но в моем сценарии это нормально. Второе решение - имитировать поведение Disabled. Подробности можно найти здесь: http://aspnet.4guysfromrolla.com/articles/012506-1.aspx'>http://aspnet.4guysfromrolla.com/articles/012506-1.aspx.