Посмотрите этот пример о том, как реализовать CompositeControl (который является производным от WebControl).
http://msdn.microsoft.com/en-us/library/3257x3ea.aspx#Y114
Ваша кнопка будет существовать как личный член вашего Композита. Вы инициализируете его и подключите к серверному методу в CreateChildControls. Затем вы вызовете метод RenderControl вашей кнопки при переопределении метода Render вашего CompositeControl. Делая это таким образом, вы заставите кнопку испустить javascript, который связывает событие click с обратной передачей asp.net.
Что касается JS, который запускается до обратного вызова ... ну, это может быть немного сложно. Мое предложение состояло бы в том, чтобы просто присвоить Button уникальный CSS-класс и связать ваш метод с jQuery. Тем не менее, я не уверен, как вы задержите обратную передачу ASP.Net до тех пор, пока ваш клиентский метод не будет выполнен ... Для меня это похоже на убитие паттернов, кажется, что вы либо захотите сделать все это на стороне сервера (традиционный Asp.Net контролирует с обратной передачей) или делает все это на стороне клиента (jquery с ajax).