在需要调用日期选择的页面(WebForm1.aspx)放置两个TEXTBOX与BUTTON以选择开始时间与结束时间,并在html代码的 </body>之前加入如下javascript语句:   <script language="javascript"> 
     function openModeBegin() 
     { 
     var returnValue=window.showModalDialog("CalendarForm2.aspx",Form1.TextBoxBeginDate.value); 
     Form1.TextBoxBeginDate.value=returnValue; 
     } 
  </script> 在本页面WebForm1.aspx.cs代码页面加载Page_Load事件内加入如下语句将定义的javascript行为赋予Button:    ButtonBeginDate.Attributes.Add("onclick", "openModeBegin()"); 其中ButtonBeginDate是某一按钮的ID,奇怪的事情就在这里发生了,我运行页面,点击ButtonBeginDate并没有执行openModeBegin(),但是如果我把ButtonBeginDate换成某一textbox的话
就可以了。例如   textbox.Attributes.Add("onclick", "openModeBegin()"),点击这个textbox,就可以调用openModeBegin()了。
请问大侠,这是怎么回事啊,是不是因为button组件已经有onclick事件了。请高人指点,现在卡在这儿了,急急急啊。

解决方案 »

  1.   

    如果你的页面上有验证控件,而且按钮的CausesValidation属性是默认值或true,那么验证控件就已为这个按钮加上了客户端的onclick事件,你可以在浏览器中查看源代码看这个按钮是否有两个onclick事件。
      

  2.   

    你代码中是否有其他控件,你可以新建一个页面,任何copy代码进去试试,我测试是ok的,代码没问题
      

  3.   

    你的openModeBegin()后边少了一个分号!
      

  4.   

    原理很简单!button把自己生成的脚本和你的脚本拼接在一起。如果你的语句没有分号,那么可向而之至少有两条代码都不能正常运行。你看看button输出到客户端的脚本就明白了。