C# 使用Javascript的多用户控件
我试图用一个组合框和一个小的时钟图像来模拟一个简单的timepick用户控件。在用户控件中,我键入以下代码:C# 使用Javascript的多用户控件,c#,asp.net,javascript,C#,Asp.net,Javascript,我试图用一个组合框和一个小的时钟图像来模拟一个简单的timepick用户控件。在用户控件中,我键入以下代码: function SetFocus() { var comboBox = $find("<%=cboTime.ClientID %>"); var input = comboBox.get_inputDomElement(); input.focus(); } 函数SetFocus(){ var组合框=$find(“”); var inpu
function SetFocus() {
var comboBox = $find("<%=cboTime.ClientID %>");
var input = comboBox.get_inputDomElement();
input.focus(); }
函数SetFocus(){
var组合框=$find(“”);
var input=comboBox.get_inputdemelement();
input.focus();}
cboTime是combobox控件,后面有一个小时钟的图像
我将图像的单击事件绑定到此函数
如果我的页面上只有一个用户控件,那么一切都很好
如果我添加另一个具有不同名称的用户控件,那么无论我单击哪个图像,最后一个组合框都会获得焦点
我知道发生了什么…我只是需要一个解决办法。
当呈现页面时,它会创建两个具有组合框客户端id的相同脚本。问题是,前面的所有实例都覆盖了前置实例,因为它们的名称相同
有人能解决这个问题吗?这一定很简单,但我到处都找不到答案
谢谢您需要更改
SetFocus()
方法,以便将组合框的客户端ID作为参数:
function SetFocus(cboClientId) {
var comboBox = $find(cboClientId);
var input = comboBox.get_inputDomElement();
input.focus();
}
这意味着您必须更改调用SetFocus()
方法的代码。如果我理解正确,这是在映像上的客户端单击事件处理程序中完成的。在这种情况下,可以在控件的代码隐藏中设置图像的onclick=“…”
部分。例如,类似这样的东西(未测试):
ASCX:
然后,您可以使用SetFocus()
方法将其放入外部JS文件中(并将其包含在您的ASCX中)
<asp:DropDownList id="cboTime" .../>
<asp:Image id="img" .../>
img.Attributes.Add("onclick",
string.Format("javascript:SetFocus('{0}');", cboTime.ClientID));