2017-02-10 18 views
0

Я создал кнопку из кода позади:Динамическая кнопка в aps.net не работает

Panel dynamicPanel = new Panel(); 
Button dynamicButton = new Button(); 
dynamicButton.Text = "View";    
dynamicButton.Click += new EventHandler(dynamicButton_Click); 
dynamicPanel.Controls.Add(dynamicButton); 
dynamicDiv.Controls.Add(dynamicPanel); 

и OnClick метод:

protected void dynamicButton_Click(object sender, EventArgs e) 
{ 
    Response.Write("view button response"); 
    string script = "alert(\"view clicked.\");"; 
    ScriptManager.RegisterStartupScript(this, GetType(), 
     "ServerControlScript", script, true); 
} 

При нажатии на кнопку, есть постбэк (IsPostBack с Javascript), но EventHandler не запускается. Я могу сказать, что содержимое, которое было видно на странице, исчезает, если это ключ.

Мне нужно создать это в специальном защищенном методе void.

+2

Возможно, вы должны использовать JavaScript вместо C# для такой динамики. И если вы используете MVC, реализовать динамику также проще. –

+0

@LeiYang Не знаю MVC. Можете ли вы привести пример Javascript? Проблема заключается в том, что dynamicPanel создается для каждого элемента в списке. Таким образом, есть несколько из них на странице. – matt2605

+0

Вебформы устарели, это не Winform, поэтому лучше начать с MVC сейчас. –

ответ

1

Ваш код выглядит немного странным для меня, но что касается проблемы «Когда я нажимаю кнопку, метод не запускается»: попробуйте переименовать метод dynamicREGButton_Click() в dynamicButton_Click().

Я предполагаю, что у вас есть свой код dynamicButton_Click() в вашем коде; иначе вы не смогли бы скомпилировать. Однако метод, который вы регистрируете через dynamicButton.Click += new EventHandler(...);, - это метод, который вы вызываете. Код, который вы нам показали, не соответствует этому.

+0

У меня есть Сделано изменение dynamicREGButton_Click() должно быть dynamicButton_Click(). И вы правы, что иначе это не будет компилироваться. Я просто хочу, чтобы кнопка работала до того, как я правильно установил код. – matt2605

+0

Я отредактировал его еще раз, чтобы уточнить «уволенный» смысл. – matt2605