Как я могу проверить, на какие LinkButton
нажал на странице Page_Load
. Это делается для того, чтобы избежать вызовов для обслуживания, чтобы он выполнял только то, что присутствует в его событии.Как проверить, на какой LinkButton нажимается asp.net на странице_Load
ответ
Вы имеете в виду, что вы просто пытаетесь сохранить код Page_Load от выполнения, когда запускаются другие события post-back на странице? Если это так, то заверните его в:
if (!IsPostBack)
(ИМХО это хак потребовался в связи с моделью событий WebForms, но это то, что она есть.)
Или я недоразумение вашего вопроса ?
Что касается идентификации конкретного LinkButton, вы можете использовать параметр CommandName:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.linkbutton.commandname.aspx
я использовал, чтобы сделать это, потому что в обработчик событий это было слишком поздно. Вы можете использовать javascript для записи идентификатора кнопки, нажатой в скрытое поле. Чем вы можете получить его в Page_Load. Другой способ - заглянуть в скрытое поле _EVENTTARGET, если я правильно помню, это было какое-то время.
Вы также можете объявить переменную типа LinkButton (или Control или что-то еще) и обновить кнопку (-ы), указав ссылку на себя в событии click, а затем проверьте значение в Load.
Единственное, что должно быть выполнено в вашем Page_Load
, - это код, который вы хотите всегда делать с каждым запросом, или иметь код, который вы хотите запустить только после завершения проверки после ответа. Например:
protected void Page_Load(object sender, EventArgs e)
{
// Put the all code you need to run with EVERY request here
// Then add a post back check for any code you want to ONLY run on the very
// first request to the page.
if (!IsPostBack)
{
// Code you only want to run the first time. Usually setup code to initalize
// DropDownLists, Grids or pre populate a form, etc...
}
}
Ваш LinkButton
код должен быть все на своем собственном в обработчик щелчка:
protected void yourLinkButton_Click(object sender, EventArgs e)
{
// code you want to execute when your button is clicked. This will run AFTER
// the Page_Load has finished.
}
Теперь, если ваш LinkButton
используется в GridView
, Repeater
или некоторый тип управления, который требует связывания чтобы заполнить его, тогда вам, вероятно, понадобится реализовать обработчик события RowCommand
, чтобы выяснить, какой из LinkButton
нажат. Вы также можете привязать данные к свойству CommandArgument
, чтобы передать уникальные данные, специфичные для строки, для четного обработчика.
Если у вас есть группа LinkButton
s, использующая тот же самый обработчик, наихудший сценарий - это сделать sender
, а затем сравнить значения ID
.
protected void yourLinkButton_Click(object sender, EventArgs e)
{
LinkButton btn = (LinkButton)(sender);
if (btn.ID.Equals("Some control name you want to compare"))
{
// do something
}
}
Если у меня нет отметки на ваш вопрос, просто оставьте комментарий, и я попытаюсь разобраться.
EDIT: Основываясь на ваш комментарии, это звучит, как вы должны знать, какие Button
он находится в Page_Load
из-за некоторые другие ограничения. Ну нет чистого способа сделать это в Page_Load
, но это можно сделать. Вам нужно будет проверить ключи Request.Form
и проверить наличие определенного имени кнопки (только клавиши Button
, которые были нажаты, должны быть включены в ключи).Например:
if (Request.Form.AllKeys.Contains("yourButton1"))
{
// then do something based on yourButton1
}
else if (Request.Form.AllKeys.Contains("yourButton2"))
{
// then do something based on yourButton2
}
// etc...
Я не думаю, что это любой другой чистый способ обойти его. Было бы неплохо, если бы структура включала элемент управления, который вызвал обратную передачу в одном из свойств sender
.
Другое Редактировать: Это полностью проглотило мой разум. Вышеупомянутое редактирование было нужно сделать для Button
, так как он не заполняет __EVENTTARGET
. Так как вы используете LinkButton
вы можете использовать следующую команду, чтобы получить то, что управление, вызываемая пост обратно:
string controlNameThatCausedPostBack = Request.Form["__EVENTTARGET"];
Я испытал это с LinkButton
и он работает, как ожидалось.
Надеется, что наконец-то решает вашу проблему :)
Спасибо Келси за подробные ответы. Я бы реализовал то же самое. Проблема в моей странице: я делаю разбивку на страницы на загрузку страницы и проверяю какое-то скрытое значение поля ... Я знаю его очень плохой дизайн, но он уже был реализован, поэтому его нельзя изменить – batwadi
@ prakash Я обновил свой ответ, надеюсь, включит некоторый код, который должен вас поднять и запустить. Дай мне знать, если тебе еще понадобится помощь. – Kelsey
Спасибо, что предоставили свое время Келси, но проблема в том, что LinkButton не появится в параметре Request, так как в моем запросе параметров параметра id только кнопки knoledge. Пожалуйста, совет – batwadi
Отдельных обработчики путь здесь, но вы могли бы дать каждой кнопку уникального ItemCommand
свойство, фильтр на тех, по мере необходимости.
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack && Request.Form["__EVENTTARGET"] == LinkButton1.UniqueID)
{
// LinkButton1 was clicked
}
}
- 1. ASP.NET include file на странице_Load
- 2. Отключить GridViewColoum на странице_Load
- 3. Отключение ListBox на странице_Load
- 4. Заблокировать другие события на странице_Load()
- 5. Ошибка вызова jQuery на странице_Load
- 6. Java-скрипт - изменить стиль метки ASP.NET на странице_Load
- 7. Как проверить Когда Spacebar нажимается
- 8. OnClientClick не работает на asp.net LinkButton
- 9. ASP.NET LinkButton
- 10. Как проверить подлинность на ASP.NET
- 11. asp.net проблема LinkButton HyperLink
- 12. Получить RadComboBox в CommandItemTemplate на странице_Load
- 13. RequiredFieldValidator Control отображает текст ошибки на странице_Load
- 14. Gridview PageIndex не меняется на странице_Load event
- 15. Страница Переадресация на странице_Load IF Запись существует
- 16. Как напечатать LinkButton на странице?
- 17. Как отобразить изображение на LinkButton выглядеть привлекательно в asp.net
- 18. Asp.net LinkButton, установить видимость
- 19. LinkButton в ASP.NET MVC
- 20. Как включить «нажимается» смотреть на LinearLayout
- 21. как проверить, какой была нажата в asp.net
- 22. Как изменить LinkButton forecolor на C#?
- 23. Проверить, на какой привязанный DataGridViewColumn нажал на
- 24. Как узнать, на какой индекс IndexPath.row нажимается на IBAction, и как исключить из него определенную кнопку
- 25. Как проверить, какой узел на первом месте?
- 26. ASP.NET LinkButton CSS Adapter
- 27. Как отключить LinkButton или скрыть LinkButton с JavaScript в asp.net
- 28. Выполнение X, когда изображение нажимается на мой проект ASP.Net
- 29. активность на спине нажимается ручка
- 30. На ключевых нажимается несколько раз
Для чего это должно быть печатаемая страница? Почему бы не иметь отдельных обработчиков событий для каждой кнопки ссылки и выполнить вашу обработку в этой функции? – Tommy
Выполнение загрузки страницы не связано со ссылками, – batwadi
Извините, но ваше требование звучит как обходной путь для плохого дизайна. Я бы посоветовал вам прочитать о концепциях asp.net. Хорошим началом является ответ Келси. – Scordo