首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 動態產生控制項與事件繫結 (3/3):ParseControl 動態解析標記與 FindControl 繫結事件

     編輯:關於C語言

關鍵原則

動態控制項與事件繫結不可放在 if (!IsPostBack) 區塊,否則 PostBack 時控制項消失、事件不觸發。

方式一:ParseControl 解析標記字串


protected void Page_Load(object sender, EventArgs e)
{
    Control c = ParseControl("");
    Panel1.Controls.Add(c);

    Button btn = (Button)Page.FindControl("myButton");
    btn.Command += new CommandEventHandler(On_Button);
}

void On_Button(object sender, CommandEventArgs e)
{
    Response.Write($"");
}

方式二:new 物件 + 字串標記混合


private void Page_Load(object sender, EventArgs e)
{
    // 物件建立
    var btn1 = new Button { CommandArgument = "b1", Text = "Btn1" };
    btn1.Command += OnButton;
    PlaceHolder1.Controls.Add(btn1);

    // 字串標記
    Control c3 = ParseControl("");
    PlaceHolder1.Controls.Add(c3);
    ((Button)Page.FindControl("Button3")).Command += OnButton;
    // ... 同理 Button4
}

void OnButton(object sender, CommandEventArgs e)
{
    switch (e.CommandArgument.ToString().ToLower())
    {
        case "b1": Label1.Text = "Button 1"; break;
        case "b2": Label1.Text = "Button 2"; break;
        case "b3": Label1.Text = "Button 3"; break;
        case "b4": Label1.Text = "Button 4"; break;
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved