Понимаете, не виджеты вставляют нужный им код в head или перед закрытием body. Виджеты говорят компоненту ClientScript какие JS файлы и какой JS код надо подключить к странице, и при рендере этот компонент включает нужные стили и скрипты. Вот как хитро.
renderPartial не "рендерит" скрипты, наверное потому, что на странице может быть несколько вызовов renderPartial и если бы каждый рендерил скрипты, было бы дублирование.
Но если вы не вызываете render, только renderPartial и скрипты нужны, то укажите 4-й параметр:
Или же вызывайте render с опцией (‘layout’=>false) будет тот же результат.
Но каждый виджет подключает также jQuery библиотеку, так что каждый AJAX запрос будет притягивать jQuery и будет бардак на странице, например биндинги послетают.
Я вообще правильно понял ваш вопрос?
Если что, то так я очищал подключение ненужных мне jQuery и скриптов: гист
Таким образом я добивался, что каждый AJAX запрос приносил HTML данные и JS код который я же и писал. А все JS для виджетов, я подгружал сразу на страницу. Т.е. если AJAX’ом может подгрузить поле ввода, которое будет datapicker’ом, то я заранее подключал нужный скрипт.