Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在使用asp.net创建的Java脚本中查找动态控件_C#_Javascript_Asp.net_Dynamic - Fatal编程技术网

C# 如何在使用asp.net创建的Java脚本中查找动态控件

C# 如何在使用asp.net创建的Java脚本中查找动态控件,c#,javascript,asp.net,dynamic,C#,Javascript,Asp.net,Dynamic,我在ASP.NET中创建了动态控件,如下所示 首先,我创建了一个复选框 CheckBox chkDynamic = new CheckBox(); 然后 这些控件添加到tablecell中,添加到tableRow中,添加到Table中,添加到aspPanel中(仅在设计页创建的面板) 现在我需要。。选中复选框后,我想使用JavaScript清除txtDynamic文本框 我试着用下面的方法,但不起作用 chkDynamic.Attributes["onclick"] = "javascr

我在ASP.NET中创建了动态控件,如下所示

首先,我创建了一个复选框

 CheckBox chkDynamic = new CheckBox(); 
然后

这些控件添加到tablecell中,添加到tableRow中,添加到Table中,添加到aspPanel中(仅在设计页创建的面板)

现在我需要。。选中复选框后,我想使用JavaScript清除txtDynamic文本框

我试着用下面的方法,但不起作用

 chkDynamic.Attributes["onclick"] = "javascript:document.getElementById('" + txtDynamic.UniqueID + "').value='';";
此外,我还尝试将方法调用为

 chkDynamic.Attributes.Add("onclick", "javascript:ClearText(this)");
但在这个方法中,下面这行给我的错误并没有找到“txtDynamic”。。因为控件添加了dynamicali

 document.getElementById("<%= txtDynamic.ClientID %>").value="";
document.getElementById(“”.value=”“;

提前感谢….

您是否确保在执行此脚本时已将文本框加载到DOM中

我建议在服务器端的javascript变量中注册控件的uniqueID/客户端id

然后在客户端,在加载整个DOM之后,绑定复选框上的click事件,然后分别清理文本框

(您可以通过在页面末尾编写脚本或在使用jQuery时使用document.ready来确保DOM已加载)

谢谢,
Pranav Kauhik

您是否确保在执行此脚本时已将文本框加载到DOM中

我建议在服务器端的javascript变量中注册控件的uniqueID/客户端id

然后在客户端,在加载整个DOM之后,绑定复选框上的click事件,然后分别清理文本框

(您可以通过在页面末尾编写脚本或在使用jQuery时使用document.ready来确保DOM已加载)

谢谢,
Pranav Kauhik

何时插入控件?如果你在页面加载中这样做,它将无法工作。如果还没有,我建议在Page_Init(或Page_PreInit)中插入控件


另外,请使用ClientID而不是UniqueID,因为UniqueID可以包含冒号字符(:),这在HTML ID属性中是无效的(并且在客户端脚本的变量名中是不允许的)。

何时插入控件?如果你在页面加载中这样做,它将无法工作。如果还没有,我建议在Page_Init(或Page_PreInit)中插入控件


另外,请使用ClientID而不是UniqueID,因为UniqueID可以包含冒号字符(:),这在HTML ID属性中是无效的(并且在客户端脚本的变量名中是不允许的)。

经过大量调试后,我找到了答案。ASP.Net在运行时做了什么?它通过附加父控件前缀来更改控件的ClientID。所以,在我将整个表添加到所有TR的末尾之前,我现在创建了一个TR。为了解决这个问题,我将表添加到面板中,作为
plDynamicControls.Controls.Add(tblGeneralControls)然后我添加了下面的代码,它的工作原理很好

chkDynamic.Attributes["onclick"] = string.Format("yearSuffixCHK(this, '{0}')", txtDynamic.ClientID);
txtDynamic.Attributes["onchange"] = string.Format("yearSuffixTXT(this, '{0}')", chkDynamic.ClientID);

经过多次调试,我喜欢这个答案。ASP.Net在运行时做了什么?它通过附加父控件前缀来更改控件的ClientID。所以,在我将整个表添加到所有TR的末尾之前,我现在创建了一个TR。为了解决这个问题,我将表添加到面板中,作为
plDynamicControls.Controls.Add(tblGeneralControls)然后我添加了下面的代码,它的工作原理很好

chkDynamic.Attributes["onclick"] = string.Format("yearSuffixCHK(this, '{0}')", txtDynamic.ClientID);
txtDynamic.Attributes["onchange"] = string.Format("yearSuffixTXT(this, '{0}')", chkDynamic.ClientID);