我正在生成动态链接按钮在c#.At中的任何一个点击,另一个函数将被调用,将显示哪个链接按钮被clicked.But它没有被调用在任何链接按钮的点击。
这就是我生成它的方式。
Int32 i; //create a integer variable
for (i = 1; i <= 10; i++) // will generate 10 LinkButton
{
LinkButton lb = new LinkButton(); //create instance of LinkButton
lb.Text = Convert.ToString(i) + ""; //LinkButton Text
lb.ID = Convert.ToString(i); // LinkButton ID’s
lb.CommandArgument = Convert.ToString(i); // LinkButton CommandArgument
lb.CommandName = Convert.ToString(i); // LinkButton CommanName
lb.OnClientClick+= new CommandEventHandler(lb_Command); //Create Handler for it.
//type lb.Command += and press double time Tab Key it will generat the lb_Command() code
PlaceHolder1.Controls.Add(lb); // Adding the LinkButton in PlaceHolder
}这是函数代码。
void lb_Command(object sender, CommandEventArgs e)
{
Label1.Text = e.CommandName; // will display the which Linkbutton clicked
Label1.Text = "aaaa";
// Response.Redirect(“LnkBtn.aspx?val=” + Label1.Text); // you can also use as QueryString to send values to another page
}请提供帮助。
谢谢。
发布于 2012-09-06 21:01:39
您使用了错误的事件:
ClientClick只是一个在javascript中触发的客户端事件。
您需要的是Click Event
..。
lb.Click += new CommandEventHandler(lb_Command); //Create Handler for it.如果你仍然没有捕捉到事件,那么很可能你在页面生命周期中的错误时间动态地声明了你的LinkButton (正如Eoin Campbell在他的评论和答案中提到的那样)。
他链接到了一个关于这个主题的非常好的article,你应该阅读它来理解为什么你没有捕捉到事件。
根据您对您的问题和不同答案的评论判断,您在Page_Load函数中声明了按钮。这是行不通的,因为Page_Load在页面生命周期中出现得太晚了。
据我所知,现在你有:
void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
Int32 i; //create a integer variable
for (i = 1; i <= 10; i++) // will generate 10 LinkButton
{
LinkButton lb = new LinkButton(); //create instance of LinkButton
lb.Text = Convert.ToString(i) + ""; //LinkButton Text
lb.ID = Convert.ToString(i); // LinkButton ID’s
lb.CommandArgument = Convert.ToString(i); // LinkButton CommandArgument
lb.CommandName = Convert.ToString(i); // LinkButton CommanName
lb.OnClientClick+= new CommandEventHandler(lb_Command); //Create Handler for it.
PlaceHolder1.Controls.Add(lb); // Adding the LinkButton in PlaceHolder
}
}
}你需要摆脱它。取而代之的是:
void Page_Init(object sender, EventArgs e)
{
Int32 i; //create a integer variable
for (i = 1; i <= 10; i++) // will generate 10 LinkButton
{
LinkButton lb = new LinkButton(); //create instance of LinkButton
lb.Text = Convert.ToString(i) + ""; //LinkButton Text
lb.ID = Convert.ToString(i); // LinkButton ID’s
lb.CommandArgument = Convert.ToString(i); // LinkButton CommandArgument
lb.CommandName = Convert.ToString(i); // LinkButton CommanName
lb.OnClientClick+= new CommandEventHandler(lb_Command); //Create Handler for it.
PlaceHolder1.Controls.Add(lb); // Adding the LinkButton in PlaceHolder
}
}上面链接的文章将解释为什么会这样。这是一个很难掌握的概念,但却是一个非常重要的概念。
https://stackoverflow.com/questions/12300663
复制相似问题