1.png  
如上圖所示,想要在Page_Load時,動態產生CheckBox,以及其對應的事件,參考微軟的MSDN後,自己實作了一下,蠻簡單的,看倌們可以參考看看。

using System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using System.Web.UI.WebControls; 

public partial class Default4 : System.Web.UI.Page
{
   
string[] WorkMch = {"A","B","C","D","E","F","G","H"}; //CheckBox
的Text
   
private void Page_Load(object sender, System.EventArgs e)
   
{
       
if (!IsPostBack)
           
AddControls();
   
}
    protected override void LoadViewState(object savedState
    {
        base.LoadViewState(savedState);
        //ViewState["controsladded"]
似乎是由base繼承下來的,不可更改
        if (ViewState["controsladded"] == null
            AddControls();
    }
    private void AddControls()
   
{
        pnlCheckbox.Controls.Add(new LiteralControl("<table><tr>"));
        for (int i = 0; i < WorkMch.Length; i++)
        {
            CheckBox l_cbx = new CheckBox();
            l_cbx.Text = WorkMch[i].ToString();
            l_cbx.ID = "cbx" + WorkMch[i].ToString();
            l_cbx.AutoPostBack = true;
            //pnlCheckbox為Panel控制項
            pnlCheckbox.Controls.Add(new LiteralControl("<td>"));
            pnlCheckbox.Controls.Add(l_cbx);
            pnlCheckbox.Controls.Add(new LiteralControl("</td>"));           

            if (i > 0 && i % 4 == 3 && i !=WorkMch.Length-1)
                pnlCheckbox.Controls.Add(new LiteralControl("</tr><tr>"));
            else if (i==WorkMch.Length-1)
                pnlCheckbox.Controls.Add(new LiteralControl("</tr>"));
            //
為自訂的checkbox掛上event
            l_cbx.CheckedChanged += new EventHandler(l_cbx_CheckedChanged);
        }
        pnlCheckbox.Controls.Add(new LiteralControl("</table>"));
        ViewState["controlsadded"] = true;
    }
    void l_cbx_CheckedChanged(object sender, EventArgs e)
    {
        CheckBox cbx = (CheckBox)sender;
        Response.Write("CheckBox"+cbx.Text+" : " + cbx.Checked.ToString());
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        CheckBox cbxA = new CheckBox();
        cbxA = (CheckBox)(pnlCheckbox.FindControl("cbxA"));
        Response.Write(cbxA.Checked);
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        pnlCheckbox.Controls.Clear();
    }
}

執行後點擊CheckBox A可得以下結果 :

2.png  

點擊Check cbxA可得以下結果 :

3.png

點擊CheckBoxClear則清空所有自訂CheckBox。

arrow
arrow
    全站熱搜

    忙裡偷閒 發表在 痞客邦 留言(0) 人氣()