asp: ImageButton не запускает событие onclick

бит длинный, он работает, я думаю ...

prices = [5, 12, 45]
names = []
for i, _ in enumerate(prices):
    names.append("price"+str(i+1))
dict = {}
for name, price in zip(names, prices):
    dict[name] = price
for item in dict:
    print(item, "=", dict[item])
10
задан cdonner 19 May 2010 в 22:20
поделиться

9 ответов

Вы также можете проверить, не запускает ли ваша ImageButton проверку. Если он устанавливает для свойства CausesValidation значение false (конечно, если это имеет смысл).

12
ответ дан 3 December 2019 в 16:30
поделиться

Элемент управления должен быть где-то в форме runat = server, он может быть на главной странице или в файле .aspx. Дважды проверьте, что тег формы главной страницы имеет вид runat = server

. AutoEventWireup - это свойство, которое позволяет использовать синтаксис, который вы используете. Дважды проверьте настройку на главной странице, WebForm, и ее также можно установить в web.config.

Если это не сработает, вы всегда можете явным образом закодировать его (что я предпочитаю)

<script runat=server>

protected override void OnInit(EventArgs e)
    {
        btnSubmit.Click += delegate(object sender, EventArgs e1)
        {

        };
        base.OnInit(e);
    }

</script>

UpdatePanel может связываться со стороной сервера События также возникают, так что попробуйте без UpdatePanel. И я уверен, что у вас есть ScriptManager на главной странице

0
ответ дан 3 December 2019 в 16:30
поделиться

Вы всегда можете попробовать извлечь UpdatePanel и посмотреть, работает ли он. Я обычно начинаю без UpdatePanel, заставляю все работать так, как я хочу, а затем добавляю UpdatePanel и отлаживаю все, что вызывает.

Форма в MasterPage работает для меня, так что ScriptManager / ScriptManagerProxy, упомянутый @Keltex, может быть проблемой Хотя иногда я их забываю и обычно схожу с рук.

С помощью UpdatePanel событие нажатия кнопки будет обрабатываться через Javascript, так что вы можете получить FireBug или эквивалентный (в зависимости от браузера) и проследить, что на самом деле происходит. Это срабатывает при проверке, а вы этого не видите? Есть ли где-то ошибка JS (Control Toolkit не всегда идеален)? Является ли страница на самом деле отправкой обратно и просто не затрагивает обработчик событий?

0
ответ дан 3 December 2019 в 16:30
поделиться

From the code you supplied, you seem to be missing the from your page. You must do one of the following:

  1. Have the on the page and the on the master page.
  2. Have on your page and no on the master page.

Personally, I recommend having the

tag on the master page, but that's personal preference.

0
ответ дан 3 December 2019 в 16:30
поделиться

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

for (int i = 0; i < 15; i++)
    {
        TableRow tr = new TableRow();
        for (int j = 0; j < 20; j++)
        {
            TableCell tc = new TableCell();
            ImageButton ib = new ImageButton();
            ib.Click += new ImageClickEventHandler(ImageButton1_Click);
            ib.ImageUrl = "../img/defaultCell.jpg";
            ib.ID = i + ":" + j;
            tc.Controls.Add(ib);
            tc.Width = 25;
            tc.Height = 25;
            tr.Cells.Add(tc);
        }
        GameTable.Rows.Add(tr);
    }

}

Кнопки с изображением не запускают события щелчка. ОДНАКО, если строка 'ib.ID = ...' закомментирована, они это сделают! Это единственное изменение, кажется, решает все проблемы. Понятия не имею почему. Если кто-нибудь может объяснить это, а также рассказать мне, как запускать события, сохраняя возможность устанавливать идентификаторы кнопок, я был бы очень благодарен

0
ответ дан 3 December 2019 в 16:30
поделиться

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

Вам вообще нужно назначать идентификаторы? - Неужто это все равно сделано за вас? - Верно удаление "ib.ID = i +": "+ j; '

0
ответ дан 3 December 2019 в 16:30
поделиться

У меня была похожая проблема (другой сценарий). Я использовал Page.RegisterRequiresRaiseEvent (ImageButton) , и мое событие onclick начало срабатывать. Зачем мне это нужно было? Не знаю.

4
ответ дан 3 December 2019 в 16:30
поделиться

Убедитесь, что вы используете OnClick , а не onClick

. Возможно, ваша панель обновлений мешает обратной передаче. Попробуйте без UpdatePanel и посмотрите, не в этом ли виноват.

0
ответ дан 3 December 2019 в 16:30
поделиться

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

" ib.ID = i +": "+ j; "

в качестве идентификатора ImageButton , ": "недопустимое имя, так как вы создаете его программно, ASP.NET позволяет его создавать.

Во время выполнения, если вы посмотрите на исходный HTML-код страницы, вы увидите, что специальные символы либо игнорируются, либо заменяются на « _ ». Таким образом, страница не может найти правильный элемент управления, поэтому событие не сработает. Попробуйте изменить имя простым текстом, событие сработает.

2
ответ дан 3 December 2019 в 16:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: