要求是這樣的:在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進行回傳了,而頁面中有沒有可以添加後就生成這些代碼的控件,那就把把上面的代碼拷到頁面了不就成了嗎,:-)
注意這個方法可以調用已經存在的控件的事件。不能調用方法,不知道有沒有別的方法可以實現。