- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如何将问题设置为已解决?哈哈
无论如何这是解决方案,我让我的 friend 帮助我,他做到了!
首先,正如我所说,我正在使用一个更新面板,jQuery 没有注册它的部分回发,这是主要问题。在没有更新面板的情况下它无法工作的一个稍微小一点的问题是错误地交换了单击时函数中的 1 和 0 值。
所以首先我们重写了 OnInit 方法,但是您也可以将相同的代码放在页面加载中(除了调用 base on init code ofc):) :
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
prikazi.Attributes.Add("onclick", "return LinkKlik();");
ScriptManager.RegisterStartupScript(this, this.GetType(), "init", "checkComponent();", true);
}
我们在其中注册了一个脚本,以便在每次页面重新初始化时运行,即使使用异步回发 :) 我们也将点击功能添加到此处的链接按钮。
jquery代码如下:
function checkComponent() {
//
if (document.getElementById('hidTracker').value == '1') {
$(".sokrij").show();
}
else {
$(".sokrij").hide();
}
}
function LinkKlik() {
var panel = $("#fioka").find(".sokrij");
if (panel.is(":visible")) {
panel.slideUp("500");
$('#hidTracker').attr("value", "0");
}
else {
panel.slideDown("500");
$('#hidTracker').attr("value", "1");
}
// that's it folks! (return false to stop the browser jumping the the '#' link
return false;
}
它基本上和以前一样,只是通过上面的覆盖分成了 2 个链接到事件的函数。
最后一件事,你需要这些:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<script type="text/javascript" src="drawer.js"></script>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
<asp:HiddenField ID="hidTracker" runat="server" Value="0" />
<div id="fioka">
<asp:LinkButton runat="server" href="#" ID="prikazi">Click This to show/close</asp:LinkButton>
<div class="sokrij" id="sokrij">
HIDE THIS!!!
</div>
</div>
<asp:Button ID="Button1" runat="server" Text="Button" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="prikazi" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
它甚至可以在更新面板中使用。该按钮用于生成回传,您甚至可以将一个按钮放在外面以在更新面板之外生成真正的回传。状态的值记录在隐藏字段中,链接按钮是我们用来显示/隐藏的。如果有人需要这个,请干杯,因为我看到很多关于同一件事的帖子,但没有人回答。
谢谢大家的回答,尤其是 CRAB BUCKET
I have a control in which i have various elements that do postback. I have that control in my main page in an update panel, and it works great. What i want to do is hide half of the elements and to be able to show them only when button is clicked. I managed to find some jQuery drawers and it looked fine, but whenever I opened the panel and changed an element which had a postback to call a c# function on click or value change the drawer is opened (no matter if i press the open drawer link).
my elements have to have postbacks! and i need that drawer show/hide thingie to hide half of them...
here's what I have on the drawer so far, by putting together some code myself. As I said with this code it i click any button that causes post back, the drawer is opened after the postback even if i didn't click the open drawer link. Other than that it works ok between postbacks, but I have to have it working even with postbacks!
$(function () {
$(".sokrij").hide(),
$("#prikazi").live("click", function (evt) {
evt.preventDefault();
$("#fioka").find(".sokrij").each(function () {
if ($(this).is(":visible")) {
$(this).slideUp("500");
}
});
if ($(this).next().is(":hidden")) {
$(this).next().slideDown("500");
}
return false;
});
});I need a way to make the postbacks not influence the state of the drawer. If it is open I want it to stay open after a postback, and if it is closed to stay closed after postback. So that means I need it to remember it's state and check it after every postback!
Here is my tag structure.
<div id="fioka">
<a href="#" ID="prikazi">Click This to show/close</a>
<div class="sokrij">
</div>
</div>
主要编辑:
在 Crab Bucket 的输入之后,这是我现在拥有的:
标签结构:
<input type="hidden" ID="hidTracker" value="0" />
<div id="fioka">
<a href="#" ID="prikazi">Click This to show/close</a>
<div class="sokrij">
</div>
</div>这一切都在更新面板中,其中有按钮 生成回发,但这些回发不会刷新主页, 它们包含在更新面板内。
到目前为止,jQuery 代码是:
$(document).ready(function () {
if ($('#hidTracker').val() == '1') {
$(".sokrij").show();
}
else {
$(".sokrij").hide();
}
$("#prikazi").live("click", function (evt) {
evt.preventDefault();
var panel = $("#fioka").find(".sokrij");
if (panel.is(":visible")) {
panel.slideUp("500");
$('#hidTracker').val('1');
}
else {
panel.slideDown("500");
$('#hidTracker').val('0');
}
return false;
});
});所以它现在是这样工作的:在站点加载时,它显示面板 (抽屉)关闭。如果我单击链接以显示/隐藏面板,它会起作用 高超。但是在其中一个按钮生成回发后,它会刷新 面板,每次生成回发时它都会显示为 OPEN。 回发后我仍然可以使用打开/关闭链接打开/关闭 它和那个效果很好,但我需要一种方法来保存面板的状态 在回发之前并在回发之后将其设置为该状态。
隐藏字段提供的 code crab bucket 应该也适用于此,但它没有,我想我需要一些方法来执行 检查回发后面板是打开还是关闭。作为它 检查只发生在页面加载时,而不是之后 回发!!!
最佳答案
您需要自己进行状态跟踪。我为此使用了自己的隐藏字段,即
<input type="hidden" ID="hidTracker" value="0" />
在你的函数的顶部
if($('#hidTracker').val() == '1')
{
$(".sokrij").show();
}
else
{
$(".sokrij").hide();
}
然后更改您的主要功能主体以手动跟踪状态
$("#fioka").find(".sokrij").each(function ()
{
if ($(this).is(":visible"))
{
$(this).slideUp("500");
$('#hidTracker').val('0');
}
});
if ($(this).next().is(":hidden"))
{
$(this).next().slideDown("500");
$('#hidTracker').val('1');
}
但是
这仅适用于一个面板 - 这不是您的情况。因此,您将不得不完成此过程以将状态链接到显示为隐藏的面板的 ID。
我之前使用相同的原理来完成此操作,但在隐藏字段中记录一个 JSON 字符串,然后再水化它可以添加结构键/值信息以记录状态
对于两个面板,隐藏字段中的 JSON 可能看起来像这样
{"panelState": [{ID:"pnl1", "State":"1"}, {ID:"pnl2", "State":"0"}]}
这是一个 json parser帮助您构建和补水字符串。
要让它继续下去需要做一些工作,但这只是开始。如果我有时间,我会充实一点,但我不能保证 - 抱歉
编辑
适应一个面板尝试
var panel = $("#fioka").find(".sokrij");
if (panel.is(":visible"))
{
panel.slideUp("500");
$('#hidTracker').val('1');
}
else
{
panel.slideDown("500");
$('#hidTracker').val('0');
}
不要忘记将所有代码包装在
中$(document).ready(function(){
//all my code
});
否则无法保证加载 DOM,代码可能无法正确执行
编辑 2
很难获得 show hide code trackering javaScript 但这个奇怪的函数 Hook 到更新面板,并在更新面板回发时触发。这将允许您的更新面板跟踪面板状态
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args) {
if($('#hidTracker').val() == '1')
{
$(".sokrij").show();
}
else
{
$(".sokrij").hide();
}
});
希望对你有帮助
关于c# - 需要 jQuery 和 ASP.NET 的帮助想要在单击按钮时显示/隐藏面板,但是回传搞砸了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9168691/
SQLite、Content provider 和 Shared Preference 之间的所有已知区别。 但我想知道什么时候需要根据情况使用 SQLite 或 Content Provider 或
警告:我正在使用一个我无法完全控制的后端,所以我正在努力解决 Backbone 中的一些注意事项,这些注意事项可能在其他地方更好地解决......不幸的是,我别无选择,只能在这里处理它们! 所以,我的
我一整天都在挣扎。我的预输入搜索表达式与远程 json 数据完美配合。但是当我尝试使用相同的 json 数据作为预取数据时,建议为空。点击第一个标志后,我收到预定义消息“无法找到任何内容...”,结果
我正在制作一个模拟 NHL 选秀彩票的程序,其中屏幕右侧应该有一个 JTextField,并且在左侧绘制弹跳的选秀球。我创建了一个名为 Ball 的类,它实现了 Runnable,并在我的主 Draf
这个问题已经有答案了: How can I calculate a time span in Java and format the output? (18 个回答) 已关闭 9 年前。 这是我的代码
我有一个 ASP.NET Web API 应用程序在我的本地 IIS 实例上运行。 Web 应用程序配置有 CORS。我调用的 Web API 方法类似于: [POST("/API/{foo}/{ba
我将用户输入的时间和日期作为: DatePicker dp = (DatePicker) findViewById(R.id.datePicker); TimePicker tp = (TimePic
放宽“邻居”的标准是否足够,或者是否有其他标准行动可以采取? 最佳答案 如果所有相邻解决方案都是 Tabu,则听起来您的 Tabu 列表的大小太长或您的释放策略太严格。一个好的 Tabu 列表长度是
我正在阅读来自 cppreference 的代码示例: #include #include #include #include template void print_queue(T& q)
我快疯了,我试图理解工具提示的行为,但没有成功。 1. 第一个问题是当我尝试通过插件(按钮 1)在点击事件中使用它时 -> 如果您转到 Fiddle,您会在“内容”内看到该函数' 每次点击都会调用该属
我在功能组件中有以下代码: const [ folder, setFolder ] = useState([]); const folderData = useContext(FolderContex
我在使用预签名网址和 AFNetworking 3.0 从 S3 获取图像时遇到问题。我可以使用 NSMutableURLRequest 和 NSURLSession 获取图像,但是当我使用 AFHT
我正在使用 Oracle ojdbc 12 和 Java 8 处理 Oracle UCP 管理器的问题。当 UCP 池启动失败时,我希望关闭它创建的连接。 当池初始化期间遇到 ORA-02391:超过
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve
引用这个plunker: https://plnkr.co/edit/GWsbdDWVvBYNMqyxzlLY?p=preview 我在 styles.css 文件和 src/app.ts 文件中指定
为什么我的条形这么细?我尝试将宽度设置为 1,它们变得非常厚。我不知道还能尝试什么。默认厚度为 0.8,这是应该的样子吗? import matplotlib.pyplot as plt import
当我编写时,查询按预期执行: SELECT id, day2.count - day1.count AS diff FROM day1 NATURAL JOIN day2; 但我真正想要的是右连接。当
我有以下时间数据: 0 08/01/16 13:07:46,335437 1 18/02/16 08:40:40,565575 2 14/01/16 22:2
一些背景知识 -我的 NodeJS 服务器在端口 3001 上运行,我的 React 应用程序在端口 3000 上运行。我在 React 应用程序 package.json 中设置了一个代理来代理对端
我面临着一个愚蠢的问题。我试图在我的 Angular 应用程序中延迟加载我的图像,我已经尝试过这个2: 但是他们都设置了 src attr 而不是 data-src,我在这里遗漏了什么吗?保留 d
我是一名优秀的程序员,十分优秀!