2008-08-28 3 views
2

JavaScriptを使って多数のコントロールを無効にしようとしています。ラジオボタンを除いて、すべてのコントロールは正常に動作します。すべての子コントロールを無効にするための再帰関数を介して呼び出される以下のコードでは、2番目のelse(else if(コントロールはRadioButton))は決してヒットせず、RadioButtonコントロールはCheckboxコントロールとして識別されます。javascriptでasp.net radiobuttonを無効にする

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.値をポストバックするように無効にするにはどうすればよいですか?

答えて

3

これを動作させる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」を設定することです。 2番目の解決方法は、Disabledの動作を模倣することです。詳細については、http://aspnet.4guysfromrolla.com/articles/012506-1.aspx '>http://aspnet.4guysfromrolla.com/articles/012506-1.aspxを参照してください。

0

ラジオボタンかどうかを判断するには、チェックボックスの「タイプ」属性をチェックする必要があると思います。

関連する問題