Обработка события на динамически добавляемой кнопке после обратной передачи - PullRequest
0 голосов
/ 14 декабря 2011

В основном, у меня есть панель обновления, на которой у меня есть кнопка ссылки, когда пользователь нажимает на кнопку ссылки, все содержимое очищается, и появляется текстовое поле, в котором пользователь вводит что-то, а когда пользователь нажимает клавишу ввода, панель обновления должнаобновляться или обновляться или пополняться всем содержимым.

Как я могу это сделать ???

Я пытаюсь сделать так, чтобы при срабатывании обработчика события кнопки ссылки я создал скрытую кнопкудинамически и назначьте ему новый обработчик событий, который будет срабатывать при нажатии пользователем клавиши ввода. Эта новая динамическая кнопка создается внутри обработчика событий кнопки ссылки.В этом новом обработчике событий кнопки я снова заполню содержимое.

Проблема, с которой я сталкиваюсь, заключается в том, что обработчик событий динамически создаваемой кнопки не запускается.Почему ???

Пожалуйста, попробуйте ответить на 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 не запускается ???

Ответы [ 3 ]

1 голос
/ 14 декабря 2011

Вы можете поймать клавишу ввода, в текстовом поле?

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;
        }
    }
}
0 голосов
/ 19 марта 2012

Для всех вас, кто борется с обратной передачей с кнопок в 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) ... и затем, чтобы справиться со всем этим, вы можете сделать это следующим образом в событии on_load вашей страницы asp.net:

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
0 голосов
/ 14 декабря 2011

Вы должны прикрепить событие к 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();
   }

Это должно правильно запустить событие. Извините, я просто написал это на лету и не проверял, но я надеюсь, что это даст вам общее представление.

Приветствие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...