бит длинный, он работает, я думаю ...
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])
Вы также можете проверить, не запускает ли ваша ImageButton проверку. Если он устанавливает для свойства CausesValidation значение false (конечно, если это имеет смысл).
Элемент управления должен быть где-то в форме 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 на главной странице
Вы всегда можете попробовать извлечь UpdatePanel и посмотреть, работает ли он. Я обычно начинаю без UpdatePanel, заставляю все работать так, как я хочу, а затем добавляю UpdatePanel и отлаживаю все, что вызывает.
Форма в MasterPage работает для меня, так что ScriptManager / ScriptManagerProxy, упомянутый @Keltex, может быть проблемой Хотя иногда я их забываю и обычно схожу с рук.
С помощью UpdatePanel событие нажатия кнопки будет обрабатываться через Javascript, так что вы можете получить FireBug или эквивалентный (в зависимости от браузера) и проследить, что на самом деле происходит. Это срабатывает при проверке, а вы этого не видите? Есть ли где-то ошибка JS (Control Toolkit не всегда идеален)? Является ли страница на самом деле отправкой обратно и просто не затрагивает обработчик событий?
From the code you supplied, you seem to be missing the
from your page. You must do one of the following:
on the page and the
on the master page.
on your page and no
on the master page.Personally, I recommend having the tag on the master page, but that's personal preference.
На моей веб-странице я динамически создаю кнопки изображений внутри таблицы, содержащейся в 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 = ...' закомментирована, они это сделают! Это единственное изменение, кажется, решает все проблемы. Понятия не имею почему. Если кто-нибудь может объяснить это, а также рассказать мне, как запускать события, сохраняя возможность устанавливать идентификаторы кнопок, я был бы очень благодарен
Думаю, в нем что-то есть связано с тем, что вы переназначаете идентификаторы после создания и назначения обработчика событий?
Вам вообще нужно назначать идентификаторы? - Неужто это все равно сделано за вас? - Верно удаление "ib.ID = i +": "+ j; '
У меня была похожая проблема (другой сценарий). Я использовал Page.RegisterRequiresRaiseEvent (ImageButton)
, и мое событие onclick начало срабатывать. Зачем мне это нужно было? Не знаю.
Убедитесь, что вы используете OnClick , а не onClick
. Возможно, ваша панель обновлений мешает обратной передаче. Попробуйте без UpdatePanel и посмотрите, не в этом ли виноват.
У меня аналогичная проблема с кнопкой изображения, и я нашел основную причину. Вы используете
" ib.ID = i +": "+ j;
"
в качестве идентификатора ImageButton
, ":
"недопустимое имя, так как вы создаете его программно, ASP.NET позволяет его создавать.
Во время выполнения, если вы посмотрите на исходный HTML-код страницы, вы увидите, что специальные символы либо игнорируются, либо заменяются на « _
». Таким образом, страница не может найти правильный элемент управления, поэтому событие не сработает. Попробуйте изменить имя простым текстом, событие сработает.