用javascript禁用asp.net radiobutton

时间:2008-08-28 13:03:21

标签: c# javascript asp.net

我正在尝试使用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.如何禁用它以便回发它的值?

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)

在我的脑海中,我认为你必须检查复选框的“类型”属性,以确定它是否是一个单选按钮。