tyaps_asp, posts by tag: asp.net - LiveJournal (original) (raw)
UpdatePanel - доп возможности | [Jul. 13th, 2011|09:22 am]Программирование в ASP.Net |
---|---|
[**Tags**|ajax, asp.net, javascript]http://msdn.microsoft.com/ru-ru/library/bb397432%28v=vs.90%29.aspx - beginRequest и endRequest - javascript-ыВ Telerik updatePanel есть свойства - какие js-функции запускать при начале/конце асинхронного запроса панели.В микрософтовской updatePanel это надо делать отдельным образом.<script type="text/javascript" language="javascript"> Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler); Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); function BeginRequestHandler(sender, args) { var elem = args.get_postBackElement(); ActivateAlertDiv('visible', 'AlertDiv', elem.value + ' processing...'); } function EndRequestHandler(sender, args) { ActivateAlertDiv('hidden', 'AlertDiv', ''); } function ActivateAlertDiv(visstring, elem, msg) { var adiv = $get(elem); adiv.style.visibility = visstring; adiv.innerHTML = msg; } * This source code was highlighted with Source Code Highlighter. | |
link | post comment |
JSON Serialization | [May. 11th, 2011|05:42 pm]Программирование в ASP.Net |
---|---|
[**Tags**|asp.net, javascript, json]Представим, что в html-е нам нужен массив данных для использования в javascript. Причем, это не просто int-массив, а массив неких структур.Можно рендерить его вручную самыми разными способами, а можно поюзать json-вариант.using System.Web.Script.Serialization;List cl = new List(); //какой-то мой классcl.Add(.....); JavaScriptSerializer js = new JavaScriptSerializer(); string Json = js.Serialize(MyArray);и дальше, в aspx-е можно просто делатьvar myJson= <%=Json %>;alert(myJson[0].myProperty1)Эта штука конвертит все свойства заданного объекта в json-схему. В js.Serialize можно загонять объект с достаточно сложными свойствами, и он его будет парситьНу а если целиком объект не нужно вытаскивать, а только отдельные свойства, то можно linq-ом его сделать так string Json = js.Serialize(MyArray.Select(c => new { Id = c.Id, Value = c.Value })); --то бишь, загоняю массив объектов только что сгенеренного безымянного класса. Имя класса мне нафиг не нужно. Не плодим сущности. | |
link | post comment |
Про динамические контролы | [Feb. 14th, 2011|12:58 pm]Программирование в ASP.Net |
---|---|
[**Tags**|asp.net, c#, ершик]С динамическими контролами вообще проблемы по жизни, когда они могут включать различные элементы в различном количестве.Например, вот была фишка такая: создается таблица как контрол, в нее добавляются строки с ячейками, с контролами внутри, к контролам привязывается Attributes["onclick"]. Чего проще? )))Потом бац! Задали другой поиск: результаты другие, состав таблицы и ячеек другой, НО! Поскольку у таблицы включен EnableViewState=true по-умолчанию, то привязанные в прошлом Attributes["onclick"] применяются к новым результатам поиска, причем, поскольку состав-то динамический, и где раньше был Image,а теперь в этом месте, скажем, Button или даже вложенная Table, относящиеся совсем к другому делу, то результат просто непредсказуемый.Я так понял, что в первый postback было одно некое дерево контролов и событий/свойств, привязанных к ним, то во второй postback ViewState попытался налезть уже на новое дерево контролов, как сумел.А потом стоишь на брейкпоинте и думаешь, откуда же это взялось! | |
link | 1 comment|post comment |
GetWebResourceUrl для Javascript и CSS | [Feb. 2nd, 2011|01:12 pm]Программирование в ASP.Net |
---|---|
[Tags**|asp.net, css, javascript]Допустим, мы хотим иметь свой веб-контрол (не ascx, а контрол, унаследованный, скажем от ListBox), который использует отдельные .js и .css. И мы не хотим зависеть от страницы, в которой этот контрол будет помещен в плане наличия< script src= > .Мы можем внедрить .js и .css (ресурсы) в сборку с нашим контролом.Вот я делал некий MultiSelect (на основе ui.dropdownchecklist.js)( Read more...Collapse )** | |
link | 2 comments|post comment |
Page has Expired - проблема при нажатии кнопки Back | [Nov. 10th, 2010|04:18 pm]Программирование в ASP.Net |
---|---|
[**Tags**|asp.net, ie]Page has Expired появляется тогда, когда мы бодро во все места поставили разного рода<%@ OutputCache Location="none" %><% Response.CacheControl = "no-cache" %><% Response.AddHeader "Pragma", "no-cache" %><% Response.Expires = -1 %>< META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE" />< META HTTP-EQUIV="EXPIRES" CONTENT="-1" />Ведь наш сайт должен всегда показывать свежую инфу (особенно, если это интранет сайт)Но вот беда. Нерадивый юзер не пользуется предоставленной ему навигацией на странице, а жмет "Назад" (это им очень нравится). ( Read more...Collapse ) | |
link | post comment |
Rowspan - экспорт в эксель - лишние ячейки | [Aug. 2nd, 2010|04:55 pm]Программирование в ASP.Net |
---|---|
[**Tags**|asp.net, excel]Хочу поделиться одним моментом. Допустим мы хотим в gridview несколько ячеек слепить (rowspan) и выгрузить в excel.Вот если мы за первый postback (допустим, нажали кнопку Поиск) сформировали такой gridview, а за второй postback (допустим, нажали "Выгрузить в excel"), отрендерив тем самым gridview в html (см. http://community.livejournal.com/tyaps_asp/40111.html), то вот засада! Вылезают лишние ячейки сбоку, как будто их забыли удалить, когда делали rowspan для ячеек верхней строки.Видимо, дело в viewstate, поскольку если за один postback сразу и сформировать gridview и отрендерить его для экспорта в excel, то тогда все в порядке. | |
link | post comment |
PagerTemplate SEO | [Jul. 15th, 2010|04:23 pm]Программирование в ASP.Net |
---|---|
[Tags**|asp.net, seo]Реализованный Pager в стандартном GridView хорош, но плохо пригоден для Seo-оптимизации, ибо большинство поисковых роботов не рассматривают javascript. Поэтому пишем свой собственный pagerTemplate, в котором каждая страница отображается как ссылка на mypage.aspx?page=3. Велосипед уже изобретен, но поскольку дело-то нехитрое, то все-равно делаем свой.( Read more...Collapse )** | |
link | post comment |
При нажатии на Enter нужно нажать на определенную кнопку | [Oct. 14th, 2009|11:29 am]Программирование в ASP.Net |
---|---|
[**Tags**|asp.net, javascript]Чтобы при нажатии на Enter не отсылать форму, а сделать что-то другое (в моем случае нажать на кнопку, которая запустит ajax функции), достаточно сделать так:this.Form.Attributes.Add("onKeyPress", "javascript:if (event.keyCode==13) {document.getElementById('ctl00_cph_BtnSearch').click();return false;}"); | |
link | post comment |
UserControl внутри FormView | [Sep. 8th, 2009|05:23 pm]Программирование в ASP.Net |
---|---|
[**Tags**|asp.net, c#, ершик]Если UserControl(.ascx) находится внутри FormView, то обратиться к нему можно следующим образом((ASP.myUserControl)fv.FindControl("myUserControl1")).someproperty="value";При этом ASP - некое виртуальныое пространство имен. И все бы ничего, да только Publish WebSite после таких действий может не проходить, а WebDeployment project - не билдиться (ошибка The type or namespace name 'myUserControl' does not exist in the namespace 'ASP' (are you missing an assembly reference?)),хотя само приложение будет отлично работать, дебагиться и пр. Чтобы решить такую проблему есть единственный метод - снять в WebDeployment project-е флажок "Allow this precompiled site to be updateble"Тогда все пойдет ок (но сгенерировавшиеся aspx файлы на выходе будут пустышкой, ибо все будет заключено в dll).Не всем такое решение понравится, но альтернативы я не нашел. Но в результате возник мой следующий пост....>>> | |
link | post comment |
e.Row.RowState==DataControlRowState.Edit ?? | [Sep. 1st, 2009|11:18 am]Программирование в ASP.Net |
---|---|
[**Tags**|asp.net, c#]Ловушка, о которой надо знать.Если в gv_RowDataBound() хочется проверить состояние строки на предмет e.Row.RowState==DataControlRowState.Edit,то здесь кроется хитрость, поскольку состояние Alternate-строк может быть равным"DataControlRowState.Edit | DataControlRowState.Alternate". Битовые масочки такие. и вышеописанное условие выдаст false для Edit-строки. Поэтому, используем такое сравнение:if ((e.Row.RowState & DataControlRowState.Edit) > 0) //значит стока в режиме EditИсточник http://forums.asp.net/p/979768/1725727.aspx |
link | post comment |