前些日子出过一个问题,并在csdn上求得了解决方案,具体内容参看帖子:
http://topic.csdn.net/u/20091130/15/3ac9bde9-802d-49ec-8841-66ae1f8dae24.html
就是说在js里创建一个option后,先设置文本和值,再添加到dom中:
var opn = document.createElement("OPTION");
opn.innerText = 11;
opn.value = 11;
obj.appendChild(opn);
结果导致页面这个select会逐渐变短,改成先添加到dom中,后设置文本和值,就正常了:
var opn = document.createElement("OPTION");
obj.appendChild(opn);
opn.innerText = 11;
opn.value = 11;
昨天发博客:防止页面按钮被重复点击,导致页面重复提交的问题 ,然后同事根据这个文章修改了一个项目代码,结果导致自定义控件的按钮事件不能正常执行,表现为点击按钮后,绑定的事件没有执行:
代码如下:
ImageButton btn = new ImageButton();
btn.ID = "_btn";
btn.Click += new ImageClickEventHandler(OnClick);
btn.OnClientClick = "if(!confirm('您确认吗?')){return false;}" +
Page.ClientScript.GetPostBackEventReference(btn, string.Empty) + ";this.disabled = true;return false;";
this.Controls.Add(btn);
检查发现是ClientScript.GetPostBackEventReference生成的__EVENTTARGET参数少了前面的控件ID
问题的原因一样,是因为先设置属性,再添加控件造成的,改成下面这样就可以了:
ImageButton btn = new ImageButton();
this.Controls.Add(btn);
btn.ID = "_btn";
btn.Click += new ImageClickEventHandler(OnClick);
btn.OnClientClick = "if(!confirm('您确认吗?')){return false;}" +
Page.ClientScript.GetPostBackEventReference(btn, string.Empty) + ";this.disabled = true;return false;";
上面2个问题类似,所以列在一起记录下来。