Вызовите функцию JQuery из кода позади (в стороне) ASP.Net и C # - PullRequest
12 голосов
/ 17 февраля 2009

Мне нужно программно отключить вкладки JQuery. Вкладки находятся на панели обновления (Ajax), а панель обновления - на странице ASP.NET. Код:

<link type="text/css" rel="stylesheet" href="http://ui.jquery.com/testing/themes/base/ui.all.css" />

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>

<script type="text/javascript" src="http://ui.jquery.com/testing/ui/ui.core.js"></script>

<script type="text/javascript" src="http://ui.jquery.com/testing/ui/ui.tabs.js"></script>

<script type="text/javascript">

    $(document).ready(function(){
        $("#example").tabs();
    });


    function hidetabs(){
        $(document).ready(function(){
        $("#example").tabs();
        $('#example').data('disabled.tabs', [1, 2]);});
    }
</script>


<%@ Page Language="C#" MasterPageFile="~/any.Master" AutoEventWireup="true" Codebehind="anycode.aspx.cs"
    Inherits="anycode" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

<asp:UpdatePanel ID="UpdatePanel_Deal_Import" runat="server">
<ContentTemplate>
<div id="example">
<ul>
<li><a href="#fragment-1"><span>One</span></a></li>
<li><a href="#fragment-2"><span>Two</span></a></li>
<li><a href="#fragment-3"><span>Three</span></a></li>
</ul>
<div id="fragment-1">
<p>
First tab is active by default:</p>
<pre><code>$('#example').tabs();
Лорем Ипсум Долор Сит Амет, Концерт ау лаореет долоре магна аликвам эрат волутпат.
Лорем Ипсум Долор Сит Амет, Концерт Аликвам Эрат Волутпат.
</ Жерех: UpdatePanel> </ Жерех: Content> Код позади: защищенный void btn_Save_Click (отправитель объекта, EventArgs e) { // здесь мне нужно набросать панели. }

Функция btn_Save_Click не публикует страницу, поэтому она не вызывает функцию Javascript / JQuery HideTabs. Спасибо за любую помощь !!!

Ответы [ 3 ]

17 голосов
/ 28 июля 2011

Я пользуюсь следующим образом, и у меня работает на 100% правильно:

сначала я создаю функцию и записываю свою функцию jquery в функцию на моей странице:

<script>
    function myFunction(params) {
        $.my_jquery(params...)
        ......
    }
</script>

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

protected void myButton(object sender, EventArgs e)
{
    .....
    ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "tmp", "<script type='text/javascript'>myFunction(params...);</script>", false);
}

успешно

5 голосов
/ 17 февраля 2009

Похоже, вам нужна кнопка с клиентским действием вместо кнопки, которая отправляет ответ.

<asp:Button ID="Clickable" runat="server" text="Click me" OnClientClick="JavascriptCall();" />

Кроме того, хотя jQuery, как правило, обратно совместим, не стоит напрямую ссылаться на последний файл jjuery .js. Вместо этого я бы скачал нужную вам версию и разместил бы ее статически на вашем сайте для прямой ссылки на известную версию. Не рекомендуется добавлять зависимость от состояния или доступности ресурса на внешнем сайте, когда в этом нет необходимости.

1 голос
/ 18 февраля 2009

Спасибо, Крис,

На самом деле да, часть решения заключается в непосредственном вызове функции javascript, но вместо использования клиентского элемента управления я вызывал Javascript, когда мой запрос UpdatePanel закончился, как объясняется в следующем блоге:

http://blog.jeromeparadis.com/archive/2007/03/01/1501.aspx

Теперь мой код выглядит так:

<link type="text/css" rel="stylesheet" href="css/ui.all.css" />

    <script type="text/javascript" src="jquery-latest.js"></script>

    <script type="text/javascript" src="ui.core.js"></script>

    <script type="text/javascript" src="ui.tabs.js"></script>

    <script type="text/javascript">

    //enable tabs if a deal is selcted or saved.
    function EndRequestHandler(sender, args) {
        var rec_id = document.getElementById('<%=hidden_value.UniqueID %>').value;

        if (rec_id=="")
            hidetabs();
        else
            showtabs();
    }

    hidetabs();

    $(document).ready(function(){
        $("#rec_entry").tabs();
    });

    function hidetabs(){
        $(document).ready(function(){
        $("#rec_entry").tabs();
        $('#rec_entry').data('disabled.tabs', [1, 2, 3, 4, 5]);});
    }

    function showtabs(){
        $(document).ready(function(){
        $("#rec_entry").tabs();
        $('#rec_entry').data('disabled.tabs', []);});
    }

    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

    </script>

    ...html code add the tabs... 

Код:

защищенный void btn_Save_Click (отправитель объекта, EventArgs e) {

        .... code to save the new record ........  

        UpdatePanel_mypanel.Update();
    }

после обновления панели EndRequestHandler оценивает флаг (в данном случае скрытое поле) и вызывает функцию Javascript, которая включает или отключает вкладки.

Обработчик конечных запросов контролируется благодаря этому предложению, включенному в мой JavaScript:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

Я последовал вашему совету включить файлы javascript в мой проект. Еще раз спасибо!

Икстлано

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...