asp.net添加链接按钮动态点击功能

时间:2016-10-22 09:00:03

标签: c# html asp.net

我试图动态添加LinkBut​​ton

这是html代码:

         <div id="resultDivText" runat="server">
            <asp:PlaceHolder ID="PlaceHolder1" runat="server">

            </asp:PlaceHolder>
        </div>

这是c#代码

            LinkButton lb = new LinkButton();
            lb.Text = songName + "</br>"; //LinkButton Text
            lb.ID = song.Key.ToString(); // LinkButton ID’s
            lb.CommandArgument = Convert.ToString(song.Key); 
            lb.CommandName = Convert.ToString(song.Key); 
            lb.Click += new EventHandler(test_Click);                      
            this.form1.Controls.Add(lb);
            PlaceHolder1.Controls.Add(lb);

这就是&#34; test_Click&#34;功能

    protected void test_Click(object sender, EventArgs e)
    {
        showAllSong("let it be");
    }

当我运行代码时,它会显示linkBut​​ton列表,但是当我点击它时没有任何反应。

4 个答案:

答案 0 :(得分:1)

试试这段代码..

    static bool enable = false;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DynamicButton();
        }
        else if (enable)
        {
            DynamicButton();
        }
    }
    protected void btnBindMapping_Click(object sender, EventArgs e)
    {
        enable = true;
        DynamicButton();
    }
    protected void DynamicButton()
    {
        LinkButton lb = new LinkButton();
        lb = new LinkButton();
        lb.Text = songName + "</br>"; //LinkButton Text
        lb.ID = song.Key.ToString(); // LinkButton ID’s
        lb.CommandArgument = Convert.ToString(song.Key);
        lb.CommandName = Convert.ToString(song.Key);
        lb.Click += new EventHandler(test_Click);
        this.form1.Controls.Add(lb);
        PlaceHolder1.Controls.Add(lb);
    }
    protected void test_Click(object sender, EventArgs e)
    {
        Response.Write("<script>alert('done'); </script>");
    }

答案 1 :(得分:0)

你的代码很好..它按预期工作..但是改变这一行

this.form1.Controls.Add(lb);

this.Controls.Add(lb);

注意:它回发到您的服务器而不是客户端事件

答案 2 :(得分:0)

由于您在LinkBut​​ton中使用CommandNameCommandArgument,因此您必须委派Command而不是Click

lb.Command += new CommandEventHandler(test_Click);

protected void test_Click(object sender, CommandEventArgs e)
{
    Response.Write(e.CommandArgument + "<br>" + e.CommandName);
}

然后删除第this.form1.Controls.Add(lb);

这个问题并不清楚,但每次加载页面时都必须创建该按钮,其中包括PostBack。

答案 3 :(得分:0)

详细说明你没有提及。何时创建此动态按钮。

因为这可能会产生问题。

如果您在页面加载事件中调用c#代码,那么它可以正常工作。

        LinkButton lb = new LinkButton();
        lb = new LinkButton();
        lb.Text = songName + "</br>"; //LinkButton Text
        lb.ID = song.Key.ToString(); // LinkButton ID’s
        lb.CommandArgument = Convert.ToString(song.Key); 
        lb.CommandName = Convert.ToString(song.Key); 
        lb.Click += new EventHandler(test_Click);                      
        this.form1.Controls.Add(lb);
        PlaceHolder1.Controls.Add(lb);

如果该按钮在oninit或onload事件上动态创建,则它可以正常工作。