aspx页面
<asp:UpdatePanel ID="asypnl" runat="server">
<ContentTemplate>
<asp:Wizard />
<StartNavigationTemplate>
</StartNavigationTemplate>
<FinishNavigationTemplate>
</FinishNavigationTemplate>
<WizardSteps>
<asp:WizardStep ID="WizardStep1" runat="server">
<asp:Panel runat="server" ID="pnlGiftInfo">
<td>
<asp:DropDownList ID="DropDownPayment" runat="server">
<asp:ListItem Selected="True" Value="0">Gift</asp:ListItem>
<asp:ListItem Value="1">Pledge</asp:ListItem>
</asp:DropDownList>
</td>
</asp:Panel>
</asp:WizardStep>
</WizardSteps>
<asp:Panel runat="server" ID="pnlOutput">
<%-- Content comes from the database OutputHtml Colunm--%>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
数据库专栏
<p>Thank you for your <span id "ddlGift">gift</span><span id "ddlPayment">payment</span> of
{Amount} to the {Comm}
<script type="text/javascript" language="javascript">
var p = document.getElementById("DropDownPayment");
var eledropdownPayment = p.options[p.selectedIndex].value;
var ddlGift = document.getElementById("ddlGift");
var ddlPayment = document.getElementById("ddlPayment");
if (eledropdownPayment == "0") {
ddlGift.style.display = "block";
ddlPayment.style.display = "none";
} else {
ddlGift.style.display = "none";
ddlPayment.style.display = "block";
}
</script>
在向导ctrl中提交最后一步后,我将使用数据库内部构建的Html标记结构显示结果。一切都工作正常,除了数据库中的脚本没有执行,所以我可以看到两个跨文本。 我只想根据下拉选择选择范围。 我无法在aspx中编写脚本,因为这些span标记在页面加载事件中不存在,它们在向导ctrl中完成2个步骤后进入输出面板。 我需要一些方法来根据下拉选择显示sapn ... 谢谢。对不起长描述。
答案 0 :(得分:1)
最简单的解决方案是将两个span id放在设计时间中,而不是从db中获取包含span标签的全文。从db中提取其他文本以及金额和其他详细信息,并将其放置在适当的位置。
将其置于设计时间 谢谢你的礼物付款
来自db, {Amount}到{Comm}
现在,您可以在javascript中控制span,并且可以相应地使跨度可见/不可见。
答案 1 :(得分:0)
如果我理解正确,你的html + javascript来自数据库通过ajax,在这种情况下你可能需要延迟一点javascript的执行以给浏览器加载html内容到DOM的时间,你可以做它将您的javascript代码包含在setTimeout()
调用中,如下所示:
setTimeout(function() {
var p = document.getElementById("DropDownPayment");
var eledropdownPayment = p.options[p.selectedIndex].value;
var ddlGift = document.getElementById("Gift");
var ddlPayment = document.getElementById("ddlSelectionPledge");
if (eledropdownPayment == "0")
{
ddlGift.style.display = "block";
ddlPayment.style.display = "none";
}
else
{
ddlGift.style.display = "none";
ddlPayment.style.display = "block";
}
}, 300); //delay execution by 300 miliseconds
答案 2 :(得分:0)
要执行脚本,您必须做的不仅仅是在页面中间添加这些脚本标记。最简单的选择是使用RegisterClientScriptBlock方法。在服务器端,您需要调用该方法并将脚本作为第二个参数传递。
另一种选择是在你的javascript中实际包含一个函数。设置元素内容后,调用该函数。重点是代码不会自动执行。