gpt4 book ai didi

asp.net - 循环浏览 UpdatePanel 中的控件,并访问 javascript

转载 作者:行者123 更新时间:2023-11-28 03:01:20 25 4
gpt4 key购买 nike

我正在尝试更新页面上的所有文本框,将它们转换为标签,如下所示:

foreach (Control ctrl in masterform.Controls)
{
if (ctrl.GetType() == typeof(TextBox))
{
TextBox t = ctrl as TextBox;
t.ReadOnly = true;
t.BackColor = transparent;
t.BorderWidth = 0;
}
}

不幸的是,我用更新面板包含了所有文本框,无法再访问它们。所以我尝试过这个:

foreach (Control ctrl in masterform.Controls)
{
if (ctrl is UpdatePanel)
{
UpdatePanel s = ctrl as UpdatePanel;
if (s == PartPanel)
{
foreach (Control ctrl2 in s.Controls)
{
if (ctrl2 is TextBox)
{
TextBox t = ctrl2 as TextBox;
t.ReadOnly = true;
t.BackColor = transparent;
t.BorderWidth = 0;
}
}
}
}
}

这仅显示面板控件计数为 1,但内部有大量文本框控件。任何帮助将不胜感激。

另外,我有互斥的复选框,其工作方式如下:如果选中#1,则无法选中#2 或#3,同样,如果选中#2 或#3,则无法选中#1。这意味着,如果选中 #2 和/或 #3 并且用户选中 #1,则 #2 和 #3 变为未选中状态,如果选中 #1 并且用户选中 #2 和/或 #3,则 #1 变为未选中状态。我编写了以下函数来处理这个问题,只要更新面板不更新它就可以工作:

var objChkd;
$(document).ready(function()
{
$('.mutuallyexclusive1').click(function ()
{
checkedState = $(this).attr('checked');
$('.mutuallyexclusive2:checked').each(function ()
{
$(this).attr('checked', false);
});
$(this).attr('checked', checkedState);
});
$('.mutuallyexclusive2').click(function ()
{
checkedState = $(this).attr('checked');
$('.mutuallyexclusive1:checked').each(function ()
{
$(this).attr('checked', false);
});
$(this).attr('checked', checkedState);
});
});

<input id="Chk1" type="checkbox" runat="server" class="mutuallyexclusive1" /><br />
<input id="Chk2" type="checkbox" runat="server" class="mutuallyexclusive2" /><br />
<input id="Chk3" type="checkbox" runat="server" class="mutuallyexclusive2" /><br />

问题是,当页面加载时,它们工作正常,但如果调用更新面板的 update() 函数,它们似乎会失去与它们应该调用的 javascript 的连接。再次强调,任何帮助将不胜感激。谢谢。

最佳答案

对于您的 UpdatePanel,请尝试递归查找文本框并更新它们:

void DisableTextBoxes(Control parent)
{
foreach (Control ctrl in parent.Controls)
{
TextBox t = ctrl as TextBox;
if (t != null)
{
t.ReadOnly = true;
t.BackColor = transparent;
t.BorderWidth = 0;
}
else
{
DisableTextBoxes(ctrl);
}
}
}

DisableTextBoxes(masterform);

对于复选框,您的脚本在页面加载时执行,并且事件处理程序此时绑定(bind)到控件。如果复选框是更新的 DOM 的一部分,而在 UpdatePanel 刷新期间没有重新加载完整的页面,则事件处理程序不再绑定(bind)到它们(它们是元素)。部分刷新页面后,您需要再次绑定(bind)事件。

关于asp.net - 循环浏览 UpdatePanel 中的控件,并访问 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/721672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com