繁体   English   中英

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

[英]asp.net add link button dynamically click function

我正在尝试动态添加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);

这是“ test_Click”功能

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

当我运行代码时,会向我显示linkBut​​ton列表,但是当我单击它时,什么也不会发生。

试试这个代码..

    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>");
    }

您的代码很好..它按预期工作..但是更改此行

this.form1.Controls.Add(lb);

this.Controls.Add(lb);

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

由于在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。

在细节上您没有提及。 创建此动态按钮时。

因为那样可能会造成问题。

如果您在页面加载事件中调用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事件上动态创建,则它将起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM