动态按钮在动态事件中创建 [英] Dynamic Button Created inside a dynamic event

查看:56
本文介绍了动态按钮在动态事件中创建的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





我为它创建了一个动态按钮和点击事件。

该事件正在发挥作用。



问题是我在其中动态创建了一个按钮,其中有一个点击事件。

此事件未触发

Hi,

I have created a dynamic button and a click event for it.
That event is working.

The problem is that i have created 1 more button dynamically inside that , which has a click event.
This event is not triggering

//Method1
void ChatList()
{
    DataTable dtNames = help.GetTable("select userid from tbluser where Login='1'");

    for (int i = 0; i < dtNames.Rows.Count; i++)
    {
        HtmlGenericControl table = new HtmlGenericControl("table");
        HtmlGenericControl tr = new HtmlGenericControl("tr");
        HtmlGenericControl tdleft = new HtmlGenericControl("td");
        HtmlGenericControl tdright = new HtmlGenericControl("td");
        HtmlGenericControl light = new HtmlGenericControl("img");
        light.Attributes.Add("src", "images/chaticon.png");
        light.Attributes.Add("class", "loglight");
        tdright.Controls.Add(light);

        LinkButton names = new LinkButton();
        names.Attributes.Add("class", "list");
        names.Attributes.Add("style", "text-decoration:none;color:#8997ef;");
        names.ID = dtNames.Rows[i].ItemArray[0].ToString();
        names.Click += new EventHandler(ShowChat_Click);
        names.Text = dtNames.Rows[i].ItemArray[0].ToString();
        tdleft.Controls.Add(names);
        tr.Controls.Add(tdleft);
        tr.Controls.Add(tdright);
        table.Controls.Add(tr);
        // tr.Controls.Add(new LiteralControl(""));
        plcChatList.Controls.Add(table);
    }
}

//My first click event(WORKING)
public void ShowChat_Click(object sender, EventArgs e)
{    
     LinkButton names = new LinkButton();
     names = sender as LinkButton;
     string Id = names.ID;
     Label1.Text = Id;

     TextBox ChatBox = new TextBox();
     ChatBox.ID = names.ID + "Txt";

     HtmlGenericControl table = new HtmlGenericControl("table");
     HtmlGenericControl tr = new HtmlGenericControl("tr");
     HtmlGenericControl tdL = new HtmlGenericControl("td");
     HtmlGenericControl tdR = new HtmlGenericControl("td");
   
     HtmlGenericControl sendBtnImg = new HtmlGenericControl("img");
     sendBtnImg.Attributes.Add("src", "images/sendbtn.png");
     sendBtnImg.Attributes.Add("class", "sendbtn");
    
     LinkButton Send = new LinkButton();
     Send.ID = names.ID;

     Send.Click += new EventHandler(ShowChatMsg_Click);
     if (!Page.IsPostBack)
     {
         Send.Click += new EventHandler(ShowChatMsg_Click);
    
     }

     Send.Controls.Add(sendBtnImg);
     tdL.Controls.Add(ChatBox);
     tdR.Controls.Add(Send);
     tr.Controls.Add(tdL);
     tr.Controls.Add(tdR);
     table.Controls.Add(tr);
     plcChatWindow.Controls.Add(table);
}

//My second click event (NOT WORKING)

public void ShowChatMsg_Click(object sender, EventArgs e)
{
    LinkButton Send = new LinkButton();
    Send = sender as LinkButton;
    string Id = Send.ID;
   
    DataTable dt = help.GetTable("select text from message where userID='"+Id+"'");

    Label lblText = new Label();
    lblText.ID = Id + "chat";
    Label2.Text = Id;
    lblText.Text = dt.Rows[0].ItemArray[0].ToString();
    plcAllChat.Controls.Add(lblText);
}

推荐答案

理想情况下,应在pa​​ge_load事件中添加/注册事件处理程序。检查下面的示例代码。



Ideally, event handlers should be added/registered in page_load event. Check the below sample code.

Page_Load()
{
            Button b = new Button();
            b.ID = "btnMyButton"; 
            b.Text = "some text";
            
            b.Command += new CommandEventHandler(b_Command); //handler
}

这篇关于动态按钮在动态事件中创建的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆