+129
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
<script>
// Browser Window Size and Position
// copyright Stephen Chapman, 3rd Jan 2005, 8th Dec 2005
// you may copy these functions but please keep the copyright notice as well
function pageWidth()
{ return window.innerWidth != null ? window.innerWidth : document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null; }
function pageHeight()
{ return window.innerHeight != null ? window.innerHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body != null ? document.body.clientHeight : null; }
function posLeft()
{ return typeof window.pageXOffset != 'undefined' ? window.pageXOffset : document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ? document.body.scrollLeft : 0; }
function posTop()
{ return typeof window.pageYOffset != 'undefined' ? window.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : 0; }
function posRight()
{ return posLeft() + pageWidth(); }
function posBottom()
{ return posTop() + pageHeight(); }
function SetWindowSize(s, h, w) {
var wid = pageWidth();
var hei = pageHeight();
var n_wid = Math.round(wid * w);
var n_hei = Math.round(hei * h);
s.SetWidth(n_wid);
s.SetHeight(n_hei);
}
function SetWindowW(s, w) {
var wid = pageWidth();
var n_wid = Math.round(wid * w);
s.SetWidth(n_wid);
}
</script>
<html>
...
<td>
<dx:ASPxButton ID="AddCopyTemplate" runat="server" Text="Создать копию"
AutoPostBack="False"
CssFilePath="~/App_Themes/Office2010Black/{0}/styles.css"
CssPostfix="Office2010Black"
SpriteCssFilePath="~/App_Themes/Office2010Black/{0}/sprite.css"
Wrap="True" >
<ClientSideEvents Click="function(s, e) {
AddCopyTemplate();
}" Init="function(s, e) {
Get_Sizes_wid(s,1075);
}" />
</dx:ASPxButton>
</td>
<td>
<dx:ASPxButton ID="AddTemplate" runat="server" Text="Создать"
AutoPostBack="False"
CssFilePath="~/App_Themes/Office2010Black/{0}/styles.css"
CssPostfix="Office2010Black"
SpriteCssFilePath="~/App_Themes/Office2010Black/{0}/sprite.css">
<ClientSideEvents Click="function(s, e) {
AddTemplateClick();
}" Init="function(s, e) {
Get_Sizes_wid(s,1075);
}" />
</dx:ASPxButton>
</td>
...
</html>
я даже не знаю, в какой раздел это постить, но пусть будет тут.
товарищ, пользовался горячелюбимыми контролами от DevExpress, которые работают херпойми как, но сейчас не об этом.
в секции ClientSideEvents есть скрипты, которые выполняются на клиенте при старте, так вот он и поставил туда вызов функции, которая выставляет размеры для элементов.
это одностраничное приложение на 1100 строк только одной размеки, где используется огромное количество различных элементов, панели, гриды, гнопки, модальные окна, и много всего прочего... и ни у одного из них не заданы вообще никакие размеры, все работает на этих JS функциях.
эти волшебные цифры, которые передаются в функцию рассчитаны на его монитор, и как только они отрываются на другом мониторе с другим разрешением, то эти две кнопки занимают примерно 80% экрана.
а самое главное, что модальные окна занимают примерно 80% высоты и ширины экрана, и сначала они рисуются по центру экрана, а потом увеличиваются функцией, из-за чего они уезжают за границы экрана
Запостил: Lokich,
11 Апреля 2014
TauSigma 11.04.2014 22:11 # 0
Хотя, был-бы толстый клиент, то интересней было-бы на Ext.Js писать. Там и о разметке-то можно особо не заморачиваться.
А вот это вынести в .skin файлы в папке App_Themes? Не?
А то задвоение кода глаза режет :)
Lokich 14.04.2014 11:44 # +2
есть еще одно его творение, по такому же принципу, так там толстейший клиент был. когда пользователь заходил на страницу, выбирал фильтры и начинал работать ему в браузер около 5мб фарша вываливалось, который DevExpress генерил.
а первая версия да, делалась на ExtJs. у нас был вполне себе тонкий клиент, который общался только с низкоуровневыми вебслужбами, но его завернули. требовали динамические фильтры у грида с сортировками и пейджингом. я конечно сказал, что это выполнимо, но нужно время. мне сказали, что времени нет, купили DevExpress, в два клика сделали грид с пейджингом и сортировками, а потом еще месяца 2 топтались, чтобы нагнать уже реализованный на ExtJs функционал.
в результате мы получили примерно 2 тысячи строк в Page_Init() из серии
if(Button1.IsCallBack()){...} else if(Button2.IsCallBack()){...}
TauSigma 14.04.2014 12:45 # 0
http://www.ext.net/
Но привыкать к кодингу элементов - хардкор. Ну и денег меня жаба задушила платить, так что дока только из открытых источников. Пример (Морда к ITIL'овскому HD):
Это ещё даже не вёрстка...
Lokich 14.04.2014 12:53 # 0
TauSigma 14.04.2014 13:06 # 0
что времени нет, купили DevExpress
Вот тут говно, а это - его последствия. :)
Ну и на ExtJs странно писать тонкий клиент. Я понимаю, там, JQuery всякие, а ExtJs сам по себе на толстую разработку заточен.
Lokich 14.04.2014 15:48 # +1