如上圖所示,想要在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可得以下結果 :
點擊Check cbxA可得以下結果 :
點擊CheckBoxClear則清空所有自訂CheckBox。
留言列表