Sys $get

Довольно часто приходиться через яваскрипт обращаться к серверным элементам (ну чаще всего теперь только к кнопкам), и большинство программистов, для того чтобы достать кнопку пишут примерно следующее:

var btn = document.getElementById('<%= btnButton.ClientID %>');

а ведь можно реально проще: $get("btnButton") и все! доступ есть

для работы этой фичи на странице (или мастере) должен лежать скрипт-менеджер с установленным свойством EnableScriptGlobalization="true"

вот пример моей страницы:


1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

2

3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

4

5 <html xmlns="http://www.w3.org/1999/xhtml">

6 <head runat="server">

7 <title></title>

8 </head>

9 <body>

10 <form id="form1" runat="server">

11

12 <asp:ScriptManager ID="scriptManager" runat="server" EnablePartialRendering="true" EnableScriptGlobalization="true"></asp:ScriptManager>

13 <div id="div1">

14

15 <asp:Literal runat="server" ID="litText" Text="Изначальный текст"></asp:Literal>

16 <asp:Button runat="server" ID="btnButton" Text="Кнопка"/>

17 <asp:Panel runat="server" ID="aspPanel">

18 Привет!

19 </asp:Panel>

20

21 <br />

22

23 <input type="text" id="text" />

24 <input type="button" onclick="javascript:setText();" value="Установить текст" />

25

26 <script type="text/javascript" language="javascript">

27 function setText() {

28

29 // многие программисты бы написали:

30 var btn = document.getElementById('<%= btnButton.ClientID %>') ;

31

32 // а можно введь проще: $get("btnButton")

33

34 $get("btnButton").value = "Текст после нажатия";

35 $get("aspPanel").innerHTML = "Была нажата кнопка, а это ASP-панель :) доступ через $get('aspPanel')";

36 }

37 </script>

38 </div>

39 </form>

40 </body>

41 </html>


прошу читать: http://www.asp.net/AJAX/Documentation/Live/ClientReference/Global/default.aspx + на msdn про ASP AJAX

1 комментарий:

  1. Пытаюсь так сделать внутри своего контрола - к сожалению в этом случае описанный метод не работает :(

    ОтветитьУдалить

Можете оставить свой комментарий