gpt4 book ai didi

c# - 在 javascript 中引用 ASP.NET Web 控件

转载 作者:太空宇宙 更新时间:2023-11-03 14:16:13 26 4
gpt4 key购买 nike

我在我的用户控件中创建了一个下拉列表,请参阅下面的源代码,

<asp:DropDownList ID="ddlInd" runat="server" DataSourceID="indXmlDS" DataTextField="text" DataValueField="text"></asp:DropDownList>

在 Page_load 中我这样做了:

protected void Page_Load(object sender, EventArgs e)
{
ClientScriptManager cs = Page.ClientScript;
cs.RegisterStartupScript(this.GetType(), "myScript", "<script language='javascript' src='../Scripts/myJS.js'></script>");
ddlInd.Attributes["onchange"] = "showTextbox()";
}

如果我想在我的外部 javascript 文件 myJS.js 中引用这个控件,我应该使用什么代码?

我试过使用 document.getElementById("<%=ddlInd.ClientID %>")但它会返回 NULL

有人可以帮忙吗?谢谢

编辑:

不确定在这里附加那个 myJS.js 文件是否有帮助

function showTextbox() {
var sid = <%=ddlInd.ClientID %>;
//alert(sid);
var s = document.getElementById('<%=ddlInd.ClientID %>'); // <-- problem here

alert(s);
if (s.options[s.selectedIndex].value == "Other") {
myDiv.style.display = "inline";
alert("display");
}
else {
myDiv.style.display = "none";
alert("none");
}
}

编辑2:

我找到了解决方法,即在用户控制页面中嵌入脚本而不是使用外部脚本文件。谢谢大家的建议。他们都非常乐于助人。

同样修改后的js脚本如下,可以运行:

function showTextbox(objID) {
var s = document.getElementById(objID);
var div = document.getElementById("myDiv");
if (s.options[s.selectedIndex].value == "Other") {
div.style.display = "inline";
}
else {
div.style.display = "none";
}
}

最佳答案

尝试使用 ClientScriptManager.RegisterClientScriptInclude而不是 RegisterStartupScript。

在您的情况下,您似乎包含了一个外部 javascript 文件,而不是应该直接出现在页面中的 javascript 代码。

同时尝试将 document.getElementById('<%=ddlInd.ClientID %>') 中的双引号 "更改为单引号 '

编辑 哦,我看到您正在尝试在您的 javascript 文件中执行 <%=ddlIndustry.ClientID %>。那不会在外部 js 文件中解释!您应该将函数直接包含在页面中(而不是作为外部文件),或者尝试将 ColntrolId 作为参数传递给 js 函数

关于c# - 在 javascript 中引用 ASP.NET Web 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6531525/

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