Member 8583441 Ответов: 2

Как создать событие onclick для ASP.NET кнопка в C# ASP.NET код позади visual studio 2017


Мой asp.net кнопка создается в коде позади, и я требую, чтобы событие onclick было сгенерировано. Это событие onclick создается, но не срабатывает при нажатии кнопки во время выполнения. Я дал точку останова при открытии фигурных скобок события нажатия кнопки

Что я уже пробовал:

Button ButtonFinish = new Button()
{
    Text = "Finish"
};
ButtonFinish.Attributes.Add("class", "btn btn-group-toggle btn-primary");
ButtonFinish.Style["margin-bottom"] = "10px";
ButtonFinish.Attributes.Add("runat", "server");
ButtonFinish.Click += new EventHandler(this.ButtonFinish_Click);

private void ButtonFinish_Click(object sender, EventArgs e)
{
    throw new NotImplementedException();
}

2 Ответов

Рейтинг:
0

F-ES Sitecore

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

// Make sure this code is in your page_load event.  Also give the button an ID
Button ButtonFinish = new Button()
{
    Text = "Finish"
};
ButtonFinish.Attributes.Add("class", "btn btn-group-toggle btn-primary");
ButtonFinish.Style["margin-bottom"] = "10px";
ButtonFinish.Attributes.Add("runat", "server");
ButtonFinish.Click += new EventHandler(this.ButtonFinish_Click);


Вот пример с контекстом, вам нужно место на странице, чтобы ваша кнопка появилась, поэтому добавьте заполнитель в то место, где вы хотите показать кнопку

<asp:PlaceHolder ID="PlaceHolder1" runat="server" />


Кодовая часть выглядит следующим образом

protected void Page_Load(object sender, EventArgs e)
{
    Button ButtonFinish = new Button()
    {
        ID = "btnFinish",
        Text = "Finish"
    };
    ButtonFinish.Attributes.Add("class", "btn btn-group-toggle btn-primary");
    ButtonFinish.Style["margin-bottom"] = "10px";
    ButtonFinish.Attributes.Add("runat", "server");
    ButtonFinish.Click += new EventHandler(this.ButtonFinish_Click);

    PlaceHolder1.Controls.Add(ButtonFinish);
}

private void ButtonFinish_Click(object sender, EventArgs e)
{
    throw new NotImplementedException();
}


Member 8583441

экземпляр объекта не создан ошибка идет сэр

F-ES Sitecore

По какой линии?

Member 8583441

а также вся страница свернута означает веб приложение полно белого экрана эта ошибка теперь что мне делать сэр

F-ES Sitecore

Я обновил свое решение с помощью базового примера добавления кнопки dynamoc

Member 8583441

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

F-ES Sitecore

Вы можете просто определить переменную на уровне класса

частная кнопка ButtonFinish;
охраняемых недействительными в(объект отправителя, EventArgs в электронной)
{
ButtonFinish = новая кнопка()
{
ID = "btnFinish",
Text = "Готово"
};
...

Однако вы, вероятно, должны использовать FindControl на заполнителе, чтобы получить ссылку на элемент управления, так что что-то вроде

var btn = (Button)PlaceHolder1.FindControl("btnFinish");

Member 8583441

Для меня я создал if(!IsPostBack) { CreateDynamicFinishButton(); } в загрузке страницы, и это называется боковой загрузкой страницы, чтобы создать кнопку, и она работает нормально.

приватная кнопка CreateDynamicFinishButton()
{
Button ButtonFinish = новая кнопка()
{
ID = "ButtonFinish",
Text = "Готово"
};
ButtonFinish.Атрибуты.Добавить("класс", "БТН БТН-групп-переключение БТН-первичный");
ButtonFinish.Стиль["margin-bottom"] = "10px";
ButtonFinish.Атрибуты.Добавить("runat", "server");
ButtonFinish.Click += new EventHandler(ButtonFinish_Click);
вернуться ButtonFinish;
}

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

F-ES Sitecore

Вы должны прикрепить это событие, если оно является обратной связью или нет. Подписки на события не сохраняются в состоянии просмотра, поэтому не переживают обновления страниц.

Member 8583441

Извините, сэр, мой щелчок по кнопке вообще не стреляет. У меня возникли сомнения и я проверил с помощью создания кнопки на странице aspx а не в коде позади и проверил срабатывает ли событие click или нет но здесь также событие onclick не срабатывает сэр

Рейтинг:
0

Vincent Maverick Durano

Посмотрите, работает ли этот хак для вас: Добавьте динамические кнопки и обработайте событие щелчка на стороне сервера в ASP.NET - TechBrij[^]

PS: вы должны понимать, что вам нужно подключить обработчик событий для каждого постбэка для динамически создаваемых элементов управления.