我正在尝试使用JavaScript禁用一堆控件(以便它们回发值)。除了我的单选按钮之外,所有控件都能正常工作,因为它们会失去价值。在下面的代码中,通过递归函数调用以禁用所有子控件,其他第二个(否则if(control is 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.如何禁用它以便回发它的值?
答案 0 :(得分:3)
我找到了两种方法让它工作,下面的代码正确地区分了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”,这是不理想的,因为它允许用户摆弄值,但在我的场景中很好。第二个解决方案是模仿禁用行为,详情请见:http://aspnet.4guysfromrolla.com/articles/012506-1.aspx'> http://aspnet.4guysfromrolla.com/articles/012506-1.aspx。
答案 1 :(得分:0)
在我的脑海中,我认为你必须检查复选框的“类型”属性,以确定它是否是一个单选按钮。