पृष्ठ के नियंत्रण की गिनती

वोट
1

मेरे समस्या यह है कि, मैं, एक पृष्ठ के नियंत्रण गिनती और फिर अपने प्रकार प्राप्त करना चाहते हैं, अगर वहाँ बक्सें, चेक बॉक्स या comboboxes कर रहे हैं, फिर उन्हें सक्षम या अक्षम कर रहा है? वहाँ नेट पर किसी भी उदाहरण है?

धन्यवाद

12/03/2009 को 16:15
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
4

यह एक महंगी आपरेशन हो के रूप में आप रिकर्सिवली पेज प्रत्येक नियंत्रण की जाँच के नियंत्रण संग्रह चलने के लिए होता होगा। शायद आप जानकारी नहीं है कि ASP.NET cascades Disabledमाता-पिता से बच्चे को संपत्ति? दूसरे शब्दों में आप एक माता पिता के नियंत्रण विकलांग के रूप में सभी बच्चे इनपुट नियंत्रण के रूप में अच्छी तरह से अक्षम हो जाएगा निर्धारित करते हैं।

संपादित करें: यदि आप वास्तव में यह इस तरह से करना चाहते हैं तो यह ऐसा करने का सबसे अच्छा तरीका है:

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);
    }
}
12/03/2009 को 16:18
का स्रोत उपयोगकर्ता

वोट
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; 

 }
12/03/2009 को 16:22
का स्रोत उपयोगकर्ता

वोट
0

आप की तरह एक विधि का उपयोग कर सकते हैं:

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

लेकिन जैसे-जैसे एंड्रयू ने कहा, यह महंगा हो जाएगा।

12/03/2009 को 16:20
का स्रोत उपयोगकर्ता

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