Я лично предпочитаю бывший подход (возвращающий индикатор ошибки).
, Где необходимый результат возврата должен просто указать, что ошибка произошла, при этом другая функция использовалась узнать точную ошибку.
В Вашем getSize () пример я полагал бы, что размеры должны всегда быть нулем или положительный, настолько возвращающийся отрицательный результат может указать, что ошибка, во многом как системные вызовы UNIX делают.
я не могу думать ни о какой библиотеке, которой я пользовался, который идет для последнего подхода с ошибочным объектом, переданным в как указатель. stdio
, и т.д. все идут с возвращаемым значением.
Хотя решение Файро кажется теоретически разумным, я также нашел другое решение этой проблемы. Передавая идентификатор UpdatePanels в качестве параметра (цель события) для функции doPostBack, панель обновлений отправит обратно, но не всю страницу.
__doPostBack('myUpdatePanelId','')
* примечание: второй параметр для аргументов добавления событий
надеюсь, это кому-то поможет!
РЕДАКТИРОВАТЬ: похоже, этот же совет был дан выше, когда я набирал:)
Вы пытались передать идентификатор клиента панели обновлений функции __doPostBack? Моя команда сделала это, чтобы обновить панель обновлений, и, насколько мне известно, это сработало.
__doPostBack(UpdatePanelClientID, '**Some String**');
Во-первых, не используйте панели обновления. Это вторая самая злая вещь, которую Microsoft когда-либо создавала для веб-разработчиков.
Во-вторых, если вы должны использовать панели обновления, попробуйте установить для свойства UpdateMode значение Conditional. Затем добавьте триггер к элементу управления Asp: Hidden, который вы добавляете на страницу. Назначьте событие изменения в качестве триггера. В событии перетаскивания измените значение скрытого элемента управления.
Это не проверено, но теория кажется здравой ... Если это не сработает, вы можете попробовать то же самое с кнопкой asp:, просто установите отображение : none и используйте событие щелчка вместо события изменения.
You can't call _doPostBack()
because it forces submition of the form. Why don't you disable the PostBack
on the UpdatePanel
?
Per Phairoh: используйте это в странице / компоненте на всякий случай, если имя панели изменится
<script type="text/javascript">
<!--
//must be global to be called by ExternalInterface
function JSFunction() {
__doPostBack('<%= myUpdatePanel.ClientID %>', '');
}
-->
</script>