C# asp.net-按钮事件未启动
我在我的页面上有一个搜索按钮,它在数据库上运行查询,在表中提取并显示一些条目,并为每个条目创建一个按钮。它看起来像这样:C# asp.net-按钮事件未启动,c#,asp.net,events,button,C#,Asp.net,Events,Button,我在我的页面上有一个搜索按钮,它在数据库上运行查询,在表中提取并显示一些条目,并为每个条目创建一个按钮。它看起来像这样: List<Friend> friends = SearchFriend(searchStr); foreach (Friend f in friends) { TableCell addCell = new TableCell(), nameCell = new TableCell(); addCell.Text = ""; if (!f
List<Friend> friends = SearchFriend(searchStr);
foreach (Friend f in friends)
{
TableCell addCell = new TableCell(), nameCell = new TableCell();
addCell.Text = "";
if (!f.IsMyFriend)
{
LinkButton addFriendBtn = new LinkButton();
addFriendBtn.Text = "Add as Friend";
addFriendBtn.Click += new EventHandler(addFriendBtn_Click);
addFriendBtn.ID = "add_" + f.ID.ToString();
addCell.Controls.Add(addFriendBtn);
}
nameCell.Text = f.Name;
TableRow row = new TableRow();
row.Cells.Add(addCell);
row.Cells.Add(nameCell);
SearchFriendTable.Rows.Add(row);
}
List friends=searchfriends(searchStr);
foreach(朋友中的朋友f)
{
TableCell addCell=new TableCell(),nameCell=new TableCell();
addCell.Text=“”;
如果(!f.IsMyFriend)
{
LinkButton addFriendBtn=新建LinkButton();
addFriendBtn.Text=“添加为好友”;
addFriendBtn.Click+=新建事件处理程序(addFriendBtn\u Click);
addFriendBtn.ID=“添加”+f.ID.ToString();
addCell.Controls.Add(addFriendBtn);
}
nameCell.Text=f.Name;
TableRow行=新TableRow();
row.Cells.Add(addCell);
行.单元格.添加(名称单元格);
SearchFriendTable.Rows.Add(row);
}
问题是LinkButton事件在按下时不会触发(将LinkButton更改为简单按钮也无法解决此问题)
这是我在这一部分中得到的html:
<td><a id="ctl00_contentPH_add_2" href="javascript:__doPostBack('ctl00$contentPH$add_2','')">Add as Friend</a></td>
另外-当我在页面加载上放置断点时,我确实看到了带有此控件id的u事件目标-但是事件从未开始运行
有什么线索吗?
谢谢。您是在何时何地创建该按钮的
如果动态创建按钮并希望侦听事件,则必须在PageInit事件中创建该按钮。总是所以不要使用if(!IsPostback)您在何时何地创建了该按钮 如果动态创建按钮并希望侦听事件,则必须在PageInit事件中创建该按钮。总是所以不要使用if(!IsPostback)试试这个
<td><a id="ctl00_contentPH_add_2" href="javascript:__doPostBack('<%=ct100_contentPH_add_2.ClientId %>','')">Add as Friend</a></td>
试试这个
<td><a id="ctl00_contentPH_add_2" href="javascript:__doPostBack('<%=ct100_contentPH_add_2.ClientId %>','')">Add as Friend</a></td>
为链接按钮添加事件处理程序并处理这些事件
if (!f.IsMyFriend)
{
LinkButton addFriendBtn = new LinkButton();
addFriendBtn.Text = "Add as Friend";
addFriendBtn.Click += new EventHandler(addFriendBtn_Click);
addFriendBtn.ID = "add_" + f.ID.ToString();
addFriendBtn.Click += new EventHandler(addFriendBtn_Click);
addCell.Controls.Add(addFriendBtn);
}
事件:
protected void addFriendBtn_Click(object sender, EventArgs e)
{
LinkButton lnk = (LinkButton)sender;
// do your coding
}
为链接按钮添加事件处理程序并处理这些事件
if (!f.IsMyFriend)
{
LinkButton addFriendBtn = new LinkButton();
addFriendBtn.Text = "Add as Friend";
addFriendBtn.Click += new EventHandler(addFriendBtn_Click);
addFriendBtn.ID = "add_" + f.ID.ToString();
addFriendBtn.Click += new EventHandler(addFriendBtn_Click);
addCell.Controls.Add(addFriendBtn);
}
事件:
protected void addFriendBtn_Click(object sender, EventArgs e)
{
LinkButton lnk = (LinkButton)sender;
// do your coding
}
除了Himadri的回答之外:
动态添加的控件需要在page init中重新布线。然后事件就会发生。我有一个非常类似的问题补充到Himadri的回答中:
动态添加的控件需要在page init中重新布线。然后事件就会发生。我有一个非常类似的问题请显示页面加载代码。它是空的:-O.受保护的无效页面加载(对象发送者,事件参数e){}请显示页面加载代码。它是空的:-O.受保护的无效页面加载(对象发送者,事件参数e){}我当然有一个事件处理程序:)。问题是它里面的代码从未开始运行。当然,我有一个事件处理程序:)。问题是它里面的代码从未开始运行。你是对的-我不是在页面加载中创建按钮,而是在另一个事件中创建。那我怎么修呢?我不理解您答案中的“if(!IsPostBack)”部分…您必须在Page_Init事件中创建按钮。具有iPostback我的意思是你必须在每次请求时重新创建按钮。通常,您只需初始化网格或类似对象一次—使用!IsPostback Check您是对的-我不是在页面加载中创建按钮,而是在另一个事件中创建按钮。那我怎么修呢?我不理解您答案中的“if(!IsPostBack)”部分…您必须在Page_Init事件中创建按钮。具有iPostback我的意思是你必须在每次请求时重新创建按钮。通常,您只需初始化网格或类似对象一次—使用!回邮支票