Numărarea controale pe pagina

voturi
1

Problema mea este că, vreau să conta controalele de pe o pagină și apoi a obține tipurile lor, în cazul în care există textboxes, casetele de selectare sau comboboxes, apoi să le activați sau dezactivați? Există vreun exemplu pe net?

Mulțumiri

Întrebat 12/03/2009 la 14:15
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
4

Aceasta ar fi o operație costisitoare în timp ce ar trebui să meargă recursiv colecția de control al paginii de verificare fiecare control. Poate că nu sunt conștienți de faptul că ASP.NET cascadelor Disabledproprietate de la mamă la copil? Cu alte cuvinte , dacă setați un control părinte ca dezactivat toate comenzile de intrare pentru copii va fi de asemenea dezactivat.

Editare: Dacă într - adevăr doriți să o facă în acest fel , atunci acest lucru este cel mai bun mod de a face acest lucru:

protected override void OnPreRender(EventArgs e)
{
    base.OnPreRender(e);

    int count = 0;

    this.disableControls(this, ref count);
}

void disableControls(Control control, ref int count)
{
    foreach (Control c in control.Controls)
    {
        WebControl wc = c as WebControl;

        if (wc != null)
        {
            count++;
            wc.Enabled = false;             
        }

        this.disableControls(c, ref count);
    }
}
Publicat 12/03/2009 la 14:18
sursa de către utilizator

voturi
0

Ai putea folosi o metodă cum ar fi:

public int CountControls(Control top)
{
    int cnt = 1;
    foreach (Control c in top.Controls)
        cnt += CountControls(c);
    return cnt;
}

Dar, după cum a spus Andrew, ar fi costisitoare.

Publicat 12/03/2009 la 14:20
sursa de către utilizator

voturi
0
private void ChangeControlStatus(ControlCollection col, bool status)
 {
    foreach (Control ctrl in col)
        ChangeControlStatus(ctrl.Controls, status)

          if (ctrl is TextBox)

            ((TextBox)ctrl).Enabled = status;

          else if (ctrl is Button)

            ((Button)ctrl).Enabled = status;

          else if (ctrl is RadioButton)

            ((RadioButton)ctrl).Enabled = status;

          else if (ctrl is ImageButton)

            ((ImageButton)ctrl).Enabled = status;

          else if (ctrl is CheckBox)

            ((CheckBox)ctrl).Enabled = status;

          else if (ctrl is DropDownList)

            ((DropDownList)ctrl).Enabled = status; 

       else if (ctrl is HyperLink)

        ((HyperLink)ctrl).Enabled = status; 

 }
Publicat 12/03/2009 la 14:22
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more