gpt4 book ai didi

c# - 将 onclick 事件添加到动态创建的链接按钮

转载 作者:行者123 更新时间:2023-11-30 13:05:25 25 4
gpt4 key购买 nike

我想要完成的是使用 onClick 命令设置我动态创建的链接按钮,这样当单击它时,它将在后面的代码中运行一个方法。这是我的代码:

protected void Page_Init(object sender, EventArgs e)
{
LoadLeftSide();
}

private void LoadLeftSide()
{
string filepath = Server.MapPath("DataSource.xml");
List<Post> list = PostHelper.GetAllPosts(filepath);
HtmlTable table = FindControl("tbl") as HtmlTable;

HtmlTableRow hearderrow = new HtmlTableRow();
HtmlTableCell heardercell = new HtmlTableCell();

heardercell.InnerText = "Posts:";
hearderrow.Cells.Add(heardercell);
table.Rows.Add(hearderrow);

foreach (Post p in list)
{
HtmlTableRow row = new HtmlTableRow();
HtmlTableCell cell1 = new HtmlTableCell();

LinkButton lnkPost = new LinkButton();
lnkPost.ID =string.Format("{0}" ,Guid.NewGuid());
lnkPost.Attributes.Add("runat", "server");
lnkPost.Text = p.Title;
// lnkPost.CommandName = p.Id.ToString();
// lnkPost.CommandArgument = p.Id.ToString();
//lnkPost.Command += new CommandEventHandler(this.onLinkClick);
lnkPost.Click += new EventHandler(this.onLinkClick);

cell1.Controls.Add(lnkPost);
row.Cells.Add(cell1);
table.Rows.Add(row);

}
table.DataBind();

}

protected void onLinkClick(object sender, EventArgs e)
{
string filepath = Server.MapPath("DataSource.xml");
int id = 1;
Post post=PostHelper.GetPostById(id, filepath);
lblDescription.Text = post.Description;
}

最佳答案

Page_PreInit 处理程序中创建所有动态链接,并在每个回发页面上重新创建相同的层次结构。然后 ASP.NET 将能够处理动态链接的 OnClick 事件。
而你不需要这个

lnkPost.Attributes.Add("runat", "server");

也许 ASP.NET 菜单控件会更合适?它支持使用 XPath 从 XML 进行绑定(bind)

关于c# - 将 onclick 事件添加到动态创建的链接按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4867441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com