Вызовите функцию JQuery из кода (в стороне) ASP.Net и С#
Мне нужно отключить вкладки JQuery программно. Вкладки находятся внутри панели обновления (Ajax), а панель обновления находится на странице ASP.NET.
Код:
<link type="text/css" rel="stylesheet" href="#" onclick="location.href='http://ui.jquery.com/testing/themes/base/ui.all.css'; return false;" />
<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();</code></pre>
<asp:Button ID="btn_Save" OnClick="btn_Save_Click" runat="server" Text="Save" Visible="False" CommandName="Save">
</div>
<div id="fragment-2">
Lorem ipsum dolor sit amet, consectetuer
ut laoreet dolore magna aliquam erat volutpat.
</div>
<div id="fragment-3">
Lorem ipsum dolor sit amet, consectetuer
aliquam erat volutpat.
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
Code behind:
protected void btn_Save_Click(object sender, EventArgs e)
{
//here I need to diable the panels.
}
Функция btn_Save_Click не публикует страницу, поэтому она не вызывает функцию javascript/jquery hidetabs. Спасибо за любую помощь!!!
Ответы
Ответ 1
Я использую следующий способ и для меня работает на 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);
}
успешно
Ответ 2
Похоже, вам нужна кнопка с на стороне клиента, а не с сообщением.
<asp:Button ID="Clickable" runat="server" text="Click me" OnClientClick="JavascriptCall();" />
Кроме того, в то время как jQuery, как правило, совместим с обратной связью, не рекомендуется ссылаться непосредственно на jQuery последний .js файл. Вместо этого я бы загрузил нужную вам версию и поместил ее статически на ваш сайт для прямой ссылки на известную версию. Неправильно добавлять зависимость от состояния или доступности ресурса на внешнем сайте, если это не необходимо.
Ответ 3
Спасибо Крису,
На самом деле да, часть решения заключается в вызове непосредственно функции 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...
Код позади:
protected void btn_Save_Click (отправитель объекта, EventArgs e) {
.... code to save the new record ........
UpdatePanel_mypanel.Update();
}
после обновления панели EndRequestHandler отображает флаг (в данном случае скрытое поле) и вызывает функцию Javascript, которая включает или отключает вкладки.
Обработчик endrequest контролируется благодаря этому предложению, включенному в мой javascript:
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
Я следил за вашими советами по включению файлов javascript в мой проект. Еще раз спасибо!
Икстлан