VBNet.Su - Visual Basic .NET. ASP .NET. Framework .NET.
Список форумов
AJAX

Давайте же начнём!

Быстрый переход:
AJAX / Visual Basic .NET 2005 (Framework 2.0) (ссылка)19 декабря 2008 / 16:11
kibernetics
Пользователь
ку 16.0390645+

вопросов: 6
советов: 0
ответов: 2
комментариев: 17


Алексей, или знающий народ.
Очень хочется начать пробовать Ajax, но для меня темнейший лес. А чуствую, что вещь необходимая. Особенно в моих задачах на работе когда не требуется обновлять страницу.

Давайте начём с простейших примеров. Кто-нибудь может начать? Алексей, может покажешь что-нибудь простое?
..и было сказано:
Пиши еще!: Алексей Немиро
Комментарий #1 (ссылка)19 декабря 2008 / 16:40
Алексей Немиро
Администратор
ку 65.2275660625+

вопросов: 8
советов: 13
ответов: 27
комментариев: 80


Простой пример использования AJAX
0. Качаем ASPAJAXExtSetup.msi, например отсюда http://vbnet.su/upload/utils/ASPAJAXExtSetup.msi (на сайте microsoft возможно есть более новый реализ). Устанавливаем его.

1. В папку /Bin кидаем System.Web.Extensions.dll и AjaxControlToolkit.dll (можно найти в месте, куда был установлен AJAXExtensions - где-то в папке Program Files). На локальном компе и без этого будет работать, а вот на сервере не всегда.

2. В web.config пишем (добавляем в нужные места):
  1. <configuration>
  2.   <configSections>
  3.     <!--AJAX-->
  4.     <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
  5.       <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
  6.         <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
  7.         <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
  8.           <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>
  9.           <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
  10.           <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
  11.         </sectionGroup>
  12.       </sectionGroup>
  13.     </sectionGroup>
  14.     <!--//AJAX-->
  15.   </configSections>
  16.   <system.web>
  17.     <compilation debug="true" strict="false" explicit="true">
  18.       <assemblies>
  19.         <!--AJAX-->
  20.         <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  21.         <!--// AJAX-->
  22.       </assemblies>
  23.     </compilation>
  24.  
  25.     <httpModules>
  26.       <!--AJAX-->
  27.       <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  28.     </httpModules>
  29.     <httpHandlers>
  30.       <!--AJAX-->
  31.       <remove verb="*" path="*.asmx"/>
  32.       <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  33.       <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  34.       <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
  35.       <!--// AJAX-->
  36.     </httpHandlers>
  37.   </system.web>
  38.   <!--AJAX-->
  39.   <system.web.extensions>
  40.     <scripting>
  41.       <webServices>
  42.         <!-- Uncomment this line to customize maxJsonLength and add a custom converter -->
  43.         <!--
  44.         <jsonSerialization maxJsonLength="500">
  45.           <converters>
  46.             <add name="ConvertMe" type="Acme.SubAcme.ConvertMeTypeConverter"/>
  47.           </converters>
  48.         </jsonSerialization>
  49.         -->
  50.         <!-- Uncomment this line to enable the authentication service. Include requireSSL="true" if appropriate. -->
  51.         <!--
  52.           <authenticationService enabled="true" requireSSL = "true|false"/>
  53.         -->
  54.         <!-- Uncomment these lines to enable the profile service. To allow profile properties to be retrieved
  55.              and modified in ASP.NET AJAX applications, you need to add each property name to the readAccessProperties and
  56.              writeAccessProperties attributes. -->
  57.         <!--
  58.         <profileService enabled="true"
  59.                         readAccessProperties="propertyname1,propertyname2"
  60.                         writeAccessProperties="propertyname1,propertyname2" />
  61.         -->
  62.       </webServices>
  63.       <!--
  64.         <scriptResourceHandler enableCompression="true" enableCaching="true" />
  65.         -->
  66.     </scripting>
  67.   </system.web.extensions>
  68.   <!--// AJAX-->
  69.   <!--AJAX-->
  70.   <system.webServer>
  71.     <validation validateIntegratedModeConfiguration="false"/>
  72.     <modules>
  73.       <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  74.     </modules>
  75.     <handlers>
  76.       <remove name="WebServiceHandlerFactory-Integrated"/>
  77.       <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  78.       <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  79.       <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  80.     </handlers>
  81.   </system.webServer>
  82.   <!--// AJAX-->
  83. </configuration>


3. На странице ASPX размещаем код:
  1. <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
  2. 1-ая строчка, чтоб использовать ajax-контролы.
  3.  
  4. <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" EnableScriptGlobalization="true" EnableScriptLocalization="true" LoadScriptsBeforeUI="true" />
  5.  
  6.   <asp:UpdatePanel ID="UpdatePanel1" runat="server">
  7.     <ContentTemplate>
  8.        здесь можно размещать обычные серверные контролы, все серверные события будут обрабатываться асинхронно.
  9.     </ContentTemplate>
  10.   </asp:UpdatePanel>


Это один из примеров. С контролами AjaxControlToolkit, думаю сам разберешься, там ничего сложного нет, размещать на странице: <ajaxToolkit:Имя контрола />.

Примеры использования AjaxControlToolkit лежат тут: http://vbnet.su/upload/utils/AjaxControlToolkit.zip

Если возникнут проблемы, пиши, поможем, чем сможем smile
Все сказанное админом – истина и обсуждению не подлежит, даже если истина таковой не является.
Кнопки VBNet.Su  ·  Утилиты  ·  Home Page  ·  Kbyte.Ru
--
Не забываем ставить фастаны (быстрые ответы) ;-)
Комментарий #2 (ссылка)19 декабря 2008 / 16:45
Алексей Немиро
Администратор
ку 65.2275660625+

вопросов: 8
советов: 13
ответов: 27
комментариев: 80


Для гурманов, выложил альтернативные библиотеки для работы с AJAX: http://vbnet.su/upload/scripts download

ps: на vbnet.su используется jquery-1.2.6
Все сказанное админом – истина и обсуждению не подлежит, даже если истина таковой не является.
Кнопки VBNet.Su  ·  Утилиты  ·  Home Page  ·  Kbyte.Ru
--
Не забываем ставить фастаны (быстрые ответы) ;-)
Комментарий #3 (ссылка)19 декабря 2008 / 17:52
kibernetics
Пользователь
ку 16.0390645+

вопросов: 6
советов: 0
ответов: 2
комментариев: 17


в общем, я всё сделал, но как только добавляю
  1. 1.<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>


вылазит ошибка:
  1. Server Error in '/AJAXEnabledWebSite1' Application.
  2. --------------------------------------------------------------------------------
  3.  
  4. Parser Error
  5. Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.
  6.  
  7. Parser Error Message: Could not load file or assembly 'AjaxControlToolkit' or one of its dependencies. The system cannot find the file specified.
  8.  
  9. Source Error:
  10.  
  11. Line 1: <%@ Page Language="VB" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %>
  12. Line 2
  13. Line 3:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "<noindex><a href="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" target="_blank" rel="external nofollow">http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd</a></noindex>">
  14. Line 4:  <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
  15. Line 5:  <html xmlns="<noindex><a href="http://www.w3.org/1999/xhtml" target="_blank" rel="external nofollow">http://www.w3.org/1999/xhtml</a></noindex>">
  16. Line 6:  <head runat="server">


может не там чтото делаю?

webconfig:
  1. <?xml version="1.0"?>
  2. <configuration>
  3.         <configSections>
  4.                 <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
  5.                         <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
  6.                                 <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
  7.                                 <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
  8.                                         <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>
  9.                                         <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
  10.                                         <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
  11.                                 </sectionGroup>
  12.                         </sectionGroup>
  13.                 </sectionGroup>
  14.         </configSections>
  15.         <system.web>
  16.                 <pages>
  17.                         <controls>
  18.                                 <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  19.                         </controls>
  20.                 </pages>
  21.                 <!--
  22.           Set compilation debug="true" to insert debugging
  23.           symbols into the compiled page. Because this
  24.           affects performance, set this value to true only
  25.           during development.
  26.     -->
  27.                 <compilation debug="true">
  28.                         <assemblies>
  29.                                 <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  30.                         </assemblies>
  31.                 </compilation>
  32.                 <httpHandlers>
  33.                         <remove verb="*" path="*.asmx"/>
  34.                         <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  35.                         <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  36.                         <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
  37.                 </httpHandlers>
  38.                 <httpModules>
  39.                         <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  40.                 </httpModules>
  41.         </system.web>
  42.         <system.web.extensions>
  43.                 <scripting>
  44.                         <webServices>
  45.                                 <!-- Uncomment this line to customize maxJsonLength and add a custom converter -->
  46.                                 <!--
  47.       <jsonSerialization maxJsonLength="500">
  48.         <converters>
  49.           <add name="ConvertMe" type="Acme.SubAcme.ConvertMeTypeConverter"/>
  50.         </converters>
  51.       </jsonSerialization>
  52.       -->
  53.                                 <!-- Uncomment this line to enable the authentication service. Include requireSSL="true" if appropriate. -->
  54.                                 <!--
  55.         <authenticationService enabled="true" requireSSL = "true|false"/>
  56.       -->
  57.                                 <!-- Uncomment these lines to enable the profile service. To allow profile properties to be retrieved
  58.            and modified in ASP.NET AJAX applications, you need to add each property name to the readAccessProperties and
  59.            writeAccessProperties attributes. -->
  60.                                 <!--
  61.       <profileService enabled="true"
  62.                       readAccessProperties="propertyname1,propertyname2"
  63.                       writeAccessProperties="propertyname1,propertyname2" />
  64.       -->
  65.                         </webServices>
  66.                         <!--
  67.       <scriptResourceHandler enableCompression="true" enableCaching="true" />
  68.       -->
  69.                 </scripting>
  70.         </system.web.extensions>
  71.         <system.webServer>
  72.                 <validation validateIntegratedModeConfiguration="false"/>
  73.                 <modules>
  74.                         <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  75.                 </modules>
  76.                 <handlers>
  77.                         <remove name="WebServiceHandlerFactory-Integrated"/>
  78.                         <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  79.                         <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  80.                         <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  81.                 </handlers>
  82.         </system.webServer>
  83. </configuration>
  84.  
Комментарий #4 (ссылка)20 декабря 2008 / 04:09
Алексей Немиро
Администратор
ку 65.2275660625+

вопросов: 8
советов: 13
ответов: 27
комментариев: 80


kibernetics пишет:
Parser Error Message: Could not load file or assembly 'AjaxControlToolkit' or one of its dependencies. The system cannot find the file specified.

AjaxControlToolkit.dll должна быть в папке /Bin

kibernetics пишет:
Line 4: <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit"

лучше все же во вторую строчку переместить smile

kibernetics пишет:
в общем, я всё сделал, но как только добавляю

в приведенном мной примере AjaxControlToolkit неиспользуется, так что пока можно без него попробовать smile
Все сказанное админом – истина и обсуждению не подлежит, даже если истина таковой не является.
Кнопки VBNet.Su  ·  Утилиты  ·  Home Page  ·  Kbyte.Ru
--
Не забываем ставить фастаны (быстрые ответы) ;-)
Комментарий #5 (ссылка)20 декабря 2008 / 10:44
kibernetics
Пользователь
ку 16.0390645+

вопросов: 6
советов: 0
ответов: 2
комментариев: 17


Пока не добавлял AjaxControlToolkit.
Но работает :)
Теперь, при клике на календаре, хоть страница не перерисовывается.
Вот бы какнибудь замутить ещё, чтобы в гридвью, когда на середине страницы гденибудь нажимаешь редактировать, то страница хоть и не перерисовываается уже, но фокус смещается.
из-за того, что ширина 100%, а при редактировании, таблица чутоку сжимается по ширине, что приводит её увеличение строки по высоте.
Может можно както сделать EnsureVisible редактированной колонки? В VB6 для листвью такая фича была.

П.С. как принудительно закрыть режим редактирования записи в гриде?
Если пользователь допустим не завершил операцию, а уже кликнул гденибудь в другом месте?

Комментарий #6 (ссылка)20 декабря 2008 / 11:45
Алексей Немиро
Администратор
ку 65.2275660625+

вопросов: 8
советов: 13
ответов: 27
комментариев: 80


kibernetics пишет:
но фокус смещается.

и куда он смещается, если не секрет ?

kibernetics пишет:
EnsureVisible

MaintainScrollPositionOnPostback
  1. <asp:Page MaintainScrollPositionOnPostBack="True|False" />


kibernetics пишет:
П.С. как принудительно закрыть режим редактирования записи в гриде?

Написать JavaScript, который будет ловить нужное событие (например document.onclick) и нажимать на кнопку «Отмена» в GridView (или какая там кнопка)
Посмотреть какой клиентский код обрабатывает отмену редактирования можно посмотрев на HTML страницы (только AJAX нужно вырубить, а то видно не будет). Либо отловить трафик через локальный проксик.
Все сказанное админом – истина и обсуждению не подлежит, даже если истина таковой не является.
Кнопки VBNet.Su  ·  Утилиты  ·  Home Page  ·  Kbyte.Ru
--
Не забываем ставить фастаны (быстрые ответы) ;-)
Комментарий #7 (ссылка)23 декабря 2008 / 15:58
kibernetics
Пользователь
ку 16.0390645+

вопросов: 6
советов: 0
ответов: 2
комментариев: 17


Код:
  1. 1.<asp:Page MaintainScrollPositionOnPostBack="True|False" />

не помог.

Смещается сам грид. Из-за того, что:
Ширина грида стоит 100%. В первом поле стоит ссылка 'Edit', при которой по нажатию поле выходит в режим редактирования. Появляеются вместо 'Edit' ссылки 'Update' и 'Cancel'. Из-за этого поле расширяется, другие поля сужаются, и текст переносится. Что приводит к смещению начального положения скроллинга.
Видимо, нужно жёстко привязать первый столбец по ширине.
Страницы:    < назад    ·    вперед >
1
Зарегистрируйтесь, чтобы иметь возможность участвовать в жизни форума.