Imagebutton、httpInputImage等要定义服务端事件OnClick后会有的
因为那是系统自动生成的客户端驱动服务端事件的方式,
Request.Form("__EVENTTARGET"),如果你是在第一次进入该页面
或者没有任何的事件回发,怎么可能会有呢?

解决方案 »

  1.   

    是不是你没有设置AutoPostback属性为真的缘故吧
      

  2.   

    服务器控件在不写事件的情况下,也会PostBack,是吧
    另外,Request.Form("__EVENTTARGET")没有值并不是在第一次进入页面的时候,我的检测是在!IsPostBack中
      

  3.   

    ImageButton和HttpInputImage没有AutoPostback属性
      

  4.   

    我又试了一下,就算是在OnserverClick中写了代码,也没有生成Onclick="__dopostback",Why?请各位大侠多多指点
      

  5.   

    Imagebutton、httpInputImage,这两个到客户端都是<input type=image>,这两个服务端控件的点击事件是不走onclick="__dopostback('control','')"这条路的,因为它们本身点击之后就会提交到服务端的,只有那些到客户端生成的标签不能自己触发提交的控件才会利用onclick="__dopostback('control','')"来提交表单.看这片文章<Asp.net 中服务端控件事件是如何触发的>:
    http://www.csdn.net/develop/read_article.asp?id=20670
      

  6.   

    我还是 guobaoxiang(落叶知秋),那篇文章我早就看过了,可是我还是不明白在Page_Load中该如何检测是不是从ImageButton或HttpInputImage传来的PostBack,请多帮忙。
      

  7.   

    呵呵,倒是个难题,<input type=image>的控件提交到服务端是这样的形式:?x=nn&y=nn.
    估计到服务端要根据坐标范围来区分是哪个控件引发的了
      

  8.   

    onclick="__dopostback('control','')"每当点击按钮后,就调用javascript函数,此函数需要的第一个参数就是控件的ID,如上面的CONTROL,第二个参数包函事件的额外信息,在JAVASCRIP中还有两行:
    theform._eventargent.value=eventTaget;
    theform._eventargument.value=eventargument;检测不是从ImageButton或HttpInputImage传来的,而是从上面两个隐藏控件传来的
      

  9.   

    我还是 guobaoxiang(落叶知秋),多谢楼上的各位仁兄
    回复chnking(kent) :可是我的确必须用几个图片按钮来实现,该怎么办?
    回复OK521(拉登陪我打CS) :我的提交中包含很多复杂的控制、必须调用.Net中的变量,用JavaScript很难实现,怎么办?
      

  10.   

    你误会我的意思了。
    我说的那JAVASCRIPT是BUTTON控件自动生成的。
    因为每次单击按钮后,都要回送到服务器端,所以在POSTBACK中得不到。你要的植就在下面的隐藏控件中。你看看编一后浏览的原文件
    theform._eventargent.value=eventTaget;
    theform._eventargument.value=eventargument;
      

  11.   

    那就根据传回来的参数:x=nn&y=nn.的坐标范围,再根据几个图片按钮在页面的坐标范围(这个可以从按钮的Style中得到),来判断究竟是哪一个按钮触发的吧.
      

  12.   

    你门看看BUTTON控件自动生成的代吗,
    <input type="hidden" name="_eventargent" value=""/>
    <input type="hidden" name="_eventargument" value=""/>
    <script language="javascript">function _dopostback(eventargs,eventargument){
       var theform=document.formid
       theform._eventargent.value=eventTaget;
    theform._eventargument.value=eventargument;
    theform.submit()
    </script>上面的代码中enentargs参数就是用来判断是哪一个按钮触发的
      

  13.   

    回复chnking(kent):可是检测不到Request.form("x")啊
    回复OK521(拉登陪我打CS) :可我得到的request.form("__EVENTTARGET")的确是空串
      

  14.   

    在 postback中得到的肯定是空的。因为单击按钮后就要回送到服务器。
    你可以在生成的原文件中把自动生成的JAVASCRIPT改一下。如下,这样就可以德到所有的值了。<script language="javascript">function _dopostback(eventargs,eventargument){  var strreturn
       var theform=document.formid
       theform._eventargent.value=eventTaget;
    theform._eventargument.value=eventargument;
    strreturn +=eventargument
    theform.submit()
    </script>
      

  15.   

    ok了,<input type=image id=img1>控件提交到服务端是这样的形式:?img1.x=nn&img1.y=nn.Request.Form["img1.x"]就可以了