欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp.net下利用JS实现对后台CS代码的调用方法

程序员文章站 2023-11-01 18:31:52
要求是这样的:在gridview中有些行是没有处理过的,用户用鼠标点击该行后即表示用户处理过这一行了,行的状态要和普通的一样了,但是gridview没有对行的事件处理,必须...
要求是这样的:在gridview中有些行是没有处理过的,用户用鼠标点击该行后即表示用户处理过这一行了,行的状态要和普通的一样了,但是gridview没有对行的事件处理,必须要用javascript对后台的事件进行调用,如果细心的话你会发现实际上在我们在页面上添加一个linkbutton并给它添加一个事件之后,实际上就是通过javascript进行的回传。
      当我们添加一个linkbutton,生成页面并查看源代码,会发现比没有添加linkbutton之前多了些代码

<div>
<input type="hidden" name="__eventtarget" id="__eventtarget" value="" />
<input type="hidden" name="__eventargument" id="__eventargument" value="" />
</div>
<script type="text/javascript">
<!--
var theform = document.forms['form1'];
if (!theform) {
    theform = document.form1;
}
function __dopostback(eventtarget, eventargument) {
    if (!theform.onsubmit || (theform.onsubmit() != false)) {
        theform.__eventtarget.value = eventtarget;
        theform.__eventargument.value = eventargument;
        theform.submit();
    }
}
// -->
</script>

而linkbutton的事件实际上就是javascript事件

<a id="linkbutton1" href="javascript:__dopostback('linkbutton1','')">linkbutton</a>

那么如果有了上面的这部分javascript是不是我可以利用javascript进行回传呢?
当然可以了,但是我们有一点需要注意一下,我们需要修改页面的一个属性enableeventvalidation,默认是true,我们把它修改成false,即页面中使用 <%@ page enableeventvalidation="false" %>否则会报错。
下面是我利用html控件进行的回传调用linkbutton的事件

<input id="button1" type="button" value="button" onclick="__dopostback('linkbutton1','')" />

如果那天需要利用js进行回传了,而页面中有没有可以添加后就生成这些代码的控件,那就把把上面的代码拷到页面了不就成了吗,:-)
注意这个方法可以调用已经存在的控件的事件。不能调用方法,不知道有没有别的方法可以实现。