Saya memiliki beberapa daftar dropdown dalam sebuah halaman dan ingin menonaktifkan semua jika pengguna memilih kotak centang yang bertuliskan nonaktifkan semua. Sejauh ini saya memiliki kode ini dan tidak berfungsi. Ada saran?
foreach (Control c in this.Page.Controls)
{
if (c is DropDownList)
((DropDownList)(c)).Enabled = false;
}
Setiap kontrol memiliki kontrol anak, jadi Anda harus menggunakan rekursi untuk menjangkau semuanya:
protected void DisableControls(Control parent, bool State) {
foreach(Control c in parent.Controls) {
if (c is DropDownList) {
((DropDownList)(c)).Enabled = State;
}
DisableControls(c, State);
}
}
Kemudian panggil seperti itu:
protected void Event_Name(...) {
DisableControls(Page,false); // use whatever top-most control has all the dropdowns or just the page control
} // divs, tables etc. can be called through adding runat="server" property
Anda harus melakukan ini secara rekursif, maksudnya Anda harus menonaktifkan kontrol anak dari kontrol ke:
protected void Page_Load(object sender, EventArgs e)
{
DisableChilds(this.Page);
}
private void DisableChilds(Control ctrl)
{
foreach (Control c in ctrl.Controls)
{
DisableChilds(c);
if (c is DropDownList)
{
((DropDownList)(c)).Enabled = false;
}
}
}