powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как обновить ajax updatepanel с помощью js?
7 сообщений из 7, страница 1 из 1
Как обновить ajax updatepanel с помощью js?
    #36342124
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо в функции OnClientclose() обновить аяксовую UpdatePanel. В функцию попадаю, она отрабатывает, но панель не обновляется. Хотя если тот же самый __doPostBack вызвать html'ной кнопкой - все работает. Как исправить?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
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.
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function OnClientclose(sender, eventArgs) {
            var arg = eventArgs.get_argument();
            document.getElementById('TextBox1').value = arg;
            PageMethods.SetSessionCode(arg);
            var prm = Sys.WebForms.PageRequestManager.getInstance();
            __doPostBack('UpdatePanel1', '');
        }
        function Button1_onclick() {
            __doPostBack('UpdatePanel1', '');
        }
</script>
</head>
<body>
<form id="form1" runat="server">
    <div>
        <asp:ScriptManager 
            ID="ScriptManager1" 
            runat="server" 
            EnablePageMethods="true">
        </asp:ScriptManager>
        <br />
        <asp:UpdatePanel 
            ID="UpdatePanel1" 
            runat="server" 
            onunload="UpdatePanel1_Unload">
            <ContentTemplate>
                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            </ContentTemplate>
        </asp:UpdatePanel>
        <telerik:RadWindow 
            ID="RadWindow1" 
            runat="server" 
            NavigateUrl="spalvos.aspx" 
            Visible="False" 
            VisibleOnPageLoad="True" 
            OnClientClose="OnClientclose">
        </telerik:RadWindow>
        <input 
            id="Button1" 
            type="button" 
            value="button" 
            onclick="return Button1_onclick()" />
    </div>
</form>
</body>
</html>
...
Рейтинг: 0 / 0
Как обновить ajax updatepanel с помощью js?
    #36342134
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calf,

Наверное, пора на форуме открывать ветку "коммерческие продукты для вэбформс аспнет". Уже сегодня кто-то про девэкспресс спрашивал. Теперь вот телерик.
Честно скажу и в том и в другом "чистых" хтмл-элементов нет. Есть контролы. Это - те же самые элементы или их группы, круто приправленные яваскриптом. Чтобы разобраться - firefox+firebug. Фиг его знает, как там это всё устроено. Как, например в OnClientClose передаются параметры, когда оно вызывается и т.д. .
...
Рейтинг: 0 / 0
Как обновить ajax updatepanel с помощью js?
    #36342137
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну я же говорю - в функцию
Код: plaintext
1.
2.
3.
4.
5.
6.
        function OnClientclose(sender, eventArgs) {
            var arg = eventArgs.get_argument();
            document.getElementById('TextBox1').value = arg;
            PageMethods.SetSessionCode(arg);
            var prm = Sys.WebForms.PageRequestManager.getInstance();
            __doPostBack('UpdatePanel1', '');
        }
я попадаю и пейдж метод в шарпе
Код: plaintext
1.
2.
3.
4.
        [System.Web.Services.WebMethod]
        public static void SetSessionCode(string sCode)
        {
            HttpContext.Current.Session["_arg"] = sCode;
        }
отрабатывает правильно со всеми параметрами. Значит не работает только __doPostBack('UpdatePanel1', '');....
...
Рейтинг: 0 / 0
Как обновить ajax updatepanel с помощью js?
    #36342143
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeКак, например в OnClientClose передаются параметры, когда оно вызывается и т.д. . из spalvos.aspx
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
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.
<body>
    <form id="form1" runat="server">
        <script type="text/javascript">
        function GetRadWindow()
        {
            var oWindow = null;
            if (window.radWindow) oWindow = window.radWindow;
            else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;
            return oWindow;
        }
        
        function CloseWithArg(str)
        {
           var customArg = str;
           GetRadWindow().close(customArg);
        }
        </script>
    <asp:Button ID="cmd_Closeradw" runat="server" Text="C L O S E" OnClientClick="Close()"/>
    <div>
   
        <asp:ListView ID="lv_spalvos" runat="server" EnableViewState="false">
        <ItemTemplate>
            <asp:ImageButton ID="ImageButton1" runat="server" 
             ImageUrl = '<%# "http://www."+Eval("sCode")+"_th.jpg" %>'
             OnClientClick= '<%# string.Format("CloseWithArg(\"{0}\");return false;", Eval("sCode")) %>' />
             <br />
        </ItemTemplate>
        <LayoutTemplate>
                <div ID="itemPlaceholderContainer" runat="server" style=""></div>
                <span ID="itemPlaceholder" runat="server"></span>
        </LayoutTemplate>
        </asp:ListView>
    </div>
    </form>
</body>
...
Рейтинг: 0 / 0
Как обновить ajax updatepanel с помощью js?
    #36342601
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда Вы провалились в SetSessionCode, обновление элементов станицы уже невозможно, все события по рендерингу отработаны.

Но есть такой финт ушами - ручной рендеринг через js: нам поможет ICallbackEventHandler

Вот пример для обновления грида:


Код: plaintext
1.
2.
3.
4.
5.
<script type="text/javascript">
    function ShowResult(eventArgument,context)
    {
        window.document.getElementById('Gridview').innerHTML = eventArgument;
    }
</script>

Грид кидаем в див:

Код: plaintext
1.
2.
3.
4.
5.
<div id="Gridview">
        <asp:GridView EnableViewState="false" runat="server" ID="_grid" OnRowDataBound="_grid_RowDataBound"
            AllowPaging="True">
        </asp:GridView>
        <br />
    </div>

Теперь с сервера нам нужно упасть в функцию ShowResult:

Для этого нам нужно еще до вызова серверного постбека с клиента дернуть GetCallbackEventReference.

Код: plaintext
1.
2.
3.
4.
5.
<script type="text/javascript">
        function UpdateGrid(args)
        {
            <%= ClientScript.GetCallbackEventReference(this,"args", "ShowResult", null) %>;
        }
</script>

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public string GetCallbackResult()
{
    return result;
}

public void RaiseCallbackEvent(string eventArgument)
{
     ... ///тут работаете с сервером   
    RenderGrid ...
}

Тут ручками рендерим грид в текстовую переменную result.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
private void RenderGrid(GridView _grid)
{ 
   using (StringWriter sw = new StringWriter())
    {
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        _grid.RenderControl(htw);
        htw.Flush();
        result = sw.ToString();
    }
}
...
Рейтинг: 0 / 0
Как обновить ajax updatepanel с помощью js?
    #36342629
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТут ручками рендерим грид в текстовую переменную result.
Это как я понимаю равнозначно моему ручному:
Код: plaintext
1.
2.
3.
        function UpdateMyPannel() {
            var prm = Sys.WebForms.PageRequestManager.getInstance();
            __doPostBack('UpdatePanel1', '');
        }
или
Код: plaintext
1.
2.
3.
protected void UpdateMyPannelFromServer()
{
  UpdatePanel1.Update();
}

? Если так, то не понимаю как узнать, что настал момент обновлять?
...
Рейтинг: 0 / 0
Как обновить ajax updatepanel с помощью js?
    #36342849
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну по сути да. Только в UpdateMyPannelFromServer уже поздно что-то делать. Поэтому через js можно отрендерить.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как обновить ajax updatepanel с помощью js?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]