gpt4 book ai didi

c# - 动态生成的按钮点击没有被调用?

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

我在动态生成按钮时关联了一个按钮 ID,并创建了一个按钮事件处理程序,如下所示:

btn.Click += new EventHandler(btn_Click);

按钮点击事件:

protected void btn_Click(object sender,EventArgs e)
{
Button b = new Button();
b = (Button)sender;
string i = b.ID.Substring(b.ID.Length - 1, 1);
int j1 =Convert.ToInt32(i);
id1 = to[j1];
Page.ClientScript.RegisterClientScriptBlock(Type.GetType("System.String"),
"addScript", "PassValues('" + id1 + "')", true);
ScriptManager.RegisterStartupScript(this, this.GetType(),
"sendMessage", "javascript:sendMessage(); ", true);
}

但是这个事件没有被调用我已经把我所有的控件放在一个 UpdatePanel 中

编辑:发生的事情是在按钮单击时以某种方式调用了一个函数,该函数存在于 Page.Load

protected void getEntriesRight()
{
j = (int)Session["j"];

int n1 = j + 3;

for (; j <= n1; j++)
{
if (j < fr.data.Length)
{
HtmlGenericControl listItem = new HtmlGenericControl("li");
HtmlGenericControl a1 = new HtmlGenericControl("a");
Label anchor = new Label();
Image im = new Image();

btn = new Button();
im.ImageUrl = fr.data[j].pic_square;
im.Height = 45;
im.Width = 47;


btn.CssClass = "btn-add";
btn.Text = "Invite";
to[j] = fr.data[j].uid;

btn.ID = "btn" + j;


a1.Attributes.Add("href", "#");
anchor.Text = fr.data[j].name;
a1.Controls.Add(btn);
a1.Controls.Add(im);
a1.Controls.Add(anchor);
listItem.Controls.Add(a1);
list.Controls.Add(listItem);

btn.Click += new EventHandler(btn_Click);

}
}

Session["j"] = j;
}

帮助!

最佳答案

必须在每次回发时重新创建动态生成的控件,以便触发它们的事件。这是在 .NET 中以编程方式生成控件时最常遇到的问题之一,如果您能找到解决方法,我们不鼓励您这样做。

例如,如果您有一个只应在单击另一个按钮时出现的按钮,请将该按钮放在页面中,并使用 Visible 属性来控制它是否显示还是不是。


关于您的编辑。每次回发到服务器,甚至在 UpdatePanel 内部,都会调用 Page_Load。如果您想检测请求是否来自 UpdatePanel,那么您需要在调用该函数之前检查 !Page.IsAsync

关于c# - 动态生成的按钮点击没有被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9894746/

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