Aspx後臺遍歷控件

aspx設計頁面 
//這個是檢測按鈕,檢測下面的checkbox是否被選中。選中時打印其值 
//https://www.cnblogs.com/pwblog/articles/3456385.html
<asp:Button ID="Button1" runat="server" Text="檢測" OnClick="Button1_Click" />

第一種設計:(.net 自帶的) 
<asp:CheckBox ID="CheckBox1" runat="server" Text="報紙" /> 
<asp:CheckBox ID="CheckBox2" runat="server" Text="雜誌" /> 
<asp:CheckBox ID="CheckBox3" runat="server" Text="小說" /> 
<asp:CheckBox ID="CheckBox4" runat="server" Text="詞典" />

第二種設計:(html 自帶的,但含有runnat="server") 
<input id="CheckBox1" type="checkbox" name="aa" runat="server" value="報紙"/> 
<input id="CheckBox2" type="checkbox" name="aa" runat="server" value="雜誌"/>

第三種設計:(html 自帶的) 
<input id="CheckBox1" type="checkbox" name="aa" value="報紙"/> 
<input id="CheckBox2" type="checkbox" name="aa" value="雜誌"/> 
aspx.cs文件 (將按照對應的上面的三種設計模式去寫後臺代碼。其餘的單選按鈕也相似。)

protected void Button1_Click(object sender, EventArgs e) 
{ 
    //這個是上面第一種模式 
    foreach (Control ct in form1.Controls) 
    { 
        if (ct.GetType().ToString().Equals("System.Web.UI.WebControls.CheckBox")) 
        { 
            CheckBox cb = (CheckBox)ct; 
            if (cb.Checked == true) 
            { 
                Response.Write(cb.Text); 
            } 
        } 
    } 
    //這個是上面第二種模式。(直接用request取值,會報錯的。不信試試) 
    foreach (Control ct in form1.Controls) 
    { 
        if (ct.GetType().ToString().Equals("System.Web.UI.HtmlControls.HtmlInputCheckBox")) 
        { 
            HtmlInputCheckBox cb = (HtmlInputCheckBox)ct; 
            if (cb.Checked == true) 
            { 
                Response.Write(cb.Value); 
            } 
        } 
    } 
    //這個是上面第三種模式。(沒有runnat="server",用request取值最簡單) 
    Response.Write(Request["aa"].ToString()); 
}

另外一種方式:
private void FindAllPageControl(ControlCollection controlCollection)
{
    for (int i = 0; i < controlCollection.Count; i++)
    {
        if (controlCollection[i].GetType() == typeof(NumericBox)) //System.Web.UI.WebControls.TextBox 
        {
            if ((controlCollection[i] as NumericBox).ID != "nbPrice")
            {
                (controlCollection[i] as NumericBox).DecimalValue = 0;
            }
        }
        if (controlCollection[i].HasControls())
        {
            FindAllPageControl(controlCollection[i].Controls);
        }
    }
}

//調用
FindAllPageControl(this.Page.Controls)
相關文章
相關標籤/搜索