基本上,我有一个更新面板,其中我有一个链接按钮,当用户点击链接按钮时,所有内容都被清除,文本框显示在哪个用户输入内容,当用户点击输入键时,更新面板应该刷新或更新或重新填充所有内容。
我该怎么办?
我尝试这样做的方式是,当触发链接按钮的事件处理程序时,我动态创建了一个隐藏按钮,并为其分配一个新的事件处理程序,当用户点击输入key时将触发该事件处理程序。这个新的动态按钮是内部链接按钮事件处理程序。在这个新的按钮事件处理程序中,我将重新填充内容。
我的方式问题是没有触发动态创建按钮的事件处理程序。 为什么???
请尝试用c#回答。 提前谢谢。
此致
我的代码#
protected void Submit_Click1(object sender, EventArgs e)
{
Label1.Text = TextBox1.Text + TextBox2.Text + " are sucessfully registered";
Button mento = new Button();
mento.cssclass = "invisible";
mento.Click += new EventHandler(mento_click);
// here this new mento button is attached to update panel
updatepanel1.ContentTemplateContainer.Controls.add(mento);
}
现在问题是mento_click事件处理程序没有被触发???
答案 0 :(得分:1)
您可以在文本框中捕获回车键吗?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//add event keydown
textBox1.KeyDown += new KeyEventHandler(textBox1_KeyDown);
}
void textBox1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode )
{
case Keys.Enter:
//YOur updatecode here:
MessageBox.Show("You press enter");
break;
default:
break;
}
}
}
答案 1 :(得分:0)
每次请求时,您必须在 page_init 或 page_load 上附加活动,或者事件不会连接到控件。
您可以查看此链接以了解原因:
http://msdn.microsoft.com/en-us/library/ms178472.aspx
实施例
如果你想把它挂在提交上,你应该做一些事情:
page_init(object sender, EventArgs e)
{
CreateControls();
}
private void CreateControls()
{
//Create button with event and add to the panel
}
clickEvent(object sender, EventArgs e)
{
updatePanel.Update();
}
应该正确触发事件。对不起,我刚刚写了这个并没有测试它,但我希望它能给你一般的想法。
干杯。
答案 2 :(得分:0)
对于所有从asp.net中的按钮进行回发的人,我想提一个处理按钮点击事件的替代和古老的方法。
1)使用前缀命名动态创建的按钮(例如这个:btn_)。这样,您创建的每个按钮都将具有以此前缀开头的名称。例如,您创建的第一个按钮名称为btn_0。您可以通过以下例程来实现这一目标:
For _counter As Integer = 0 To 3
Dim butt As New Button
' the next 1 line is convenient when programming for the .net 4.0 framework:
butt.ClientIDMode = UI.ClientIDMode.Static
butt.butt.ID = "btn_" & _counter
butt.Text = "someting"
page.controls.add(butt)
next
2)...然后,为了处理这一切,您可以在asp.net页面的on_load事件中这样做:
If IsPostBack Then
For Each key As String In Request.Form
If InStr(Trim(key), "btn_") > 0 Then
Response.Write(Request.Form(key))
End If
Next
End If