当前位置: 代码迷 >> ASP.NET >> 有关_DOPOSTBACK,该如何处理
  详细解决方案

有关_DOPOSTBACK,该如何处理

热度:991   发布时间:2013-02-25 00:00:00.0
有关__DOPOSTBACK
页面都有个__DOPOSTBACK客户端方法,用于回送数据至服务器。里面有两个参数,一个是EVENTTARGET,一个是EVENTARGUMENT。
我看了一下别人写的自定义控件。通过这个方法触发后台事件。EVENTTARGET传递控件名称。
第二个通常都空着。

我现使用一个下拉框ddlTest来(下拉框的AutoPostBack=False)验证一下FORM.SUBMIT();事件是这样写的。
onchange="javascript:btnClick();"

function btnClick()
{
  __DoPostBack("ddlTest","")
}

1. 在服务端有OnSelectedIndexChange事件代码。 结果选择下拉项值,也会触发OnSelectedIndexChange事件.为什么?
2.在服务端我再加一个ddlTest_OnTextChange事件代码.这时选择下拉项值,触发的是ddlTest_OnTextChange事件,而不是OnSelectedIndexChange事件代码。为什么?

其实上面说了这么多,我最终目前的是如何使用FORM.SUBMIT()页面提交的方式实现事件的调用?
因为我做的一个控件要加多个事件。 如何实现?

------解决方案--------------------------------------------------------
探讨
2.在服务端我再加一个ddlTest_OnTextChange事件代码.这时选择下拉项值,触发的是ddlTest_OnTextChange事件,而不是OnSelectedIndexChange事件代码。为什么?

------解决方案--------------------------------------------------------
首先JS是区分大小写的,你看下页面上生成的是大写的吗?另外并且所非的控件都通过此方式submit
1.为什么会触发,看下面的判断,只要onsubmit()没有return false就提交了
JScript code
function __doPostBack(eventTarget, eventArgument) {    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {        theForm.__EVENTTARGET.value = eventTarget;        theForm.__EVENTARGUMENT.value = eventArgument;        theForm.submit();    }}//theForm.__EVENTTARGET是ASP.Net生成的一个隐藏域
------解决方案--------------------------------------------------------
最全面的参考,点此
  相关解决方案