コードビハインドでフォームを作成しています。
私がやろうとしているのは、ラジオボタンがいつチェックされ、いつチェックが変更されたかを検出することです。
私は次のものを持っています
RadioButton radio = new RadioButton() { ClientIDMode = System.Web.UI.ClientIDMode.Static, AutoPostBack=true, ID = "rbOther" + testEquipment.Id, GroupName = "grp" + testEquipment.Id, Checked = false };
radio.CheckedChanged += new EventHandler(radio_CheckedChanged);
testEquipment は、いくつかのデータを格納するオブジェクトのインスタンスです。
tdBrandName.Controls.Add(new TextBox() { ClientIDMode = System.Web.UI.ClientIDMode.Static, ID = "txtBrandName" + testEquipment.Id, Text = serviceStationTestEquipment != null ? serviceStationTestEquipment.BrandName : string.Empty, Width = new Unit(300), Enabled = serviceStationTestEquipment != null ? serviceStationTestEquipment.Other : false });
tdBrandName.Controls.Add(new RequiredFieldValidator() { Display = ValidatorDisplay.Dynamic, ControlToValidate = "txtBrandName" + testEquipment.Id, Text = "Required field", ErrorMessage = "Test Equipment Tab: Field is required", CssClass = "validationerror", Enabled = serviceStationTestEquipment != null ? serviceStationTestEquipment.Other : false, ID = ID = "reqValidator" + testEquipment.Id });
次に、ラジオボタンがクリックされたときにテキストボックスと必須フィールドバリデーターを無効にしたいと考えています。つまり、3つあります。なし、デフォルト、その他
その他が選択されている場合、必要なフィールドバリデータとともにテキストボックスを有効にする必要があります。
void radio_CheckedChanged(object sender, EventArgs e)
{
RadioButton check = sender as RadioButton;
if (check == null)
return;
string Id = check.ID.Replace("rbOther", "");
TextBox text = check.Parent.Parent.FindControl(string.Format("txtBrandName{0}", Id)) as TextBox;
text.Enabled = check.Checked;
RequiredFieldValidator validator = check.Parent.Parent.FindControl(string.Format("reqValidator{0}", Id)) as RequiredFieldValidator;
validator.Enabled = check.Checked;
}