te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>asp.net ajax - How to control which JavaScript gets run after UpdatePanel partial postback endRequest? - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

asp.net ajax - How to control which JavaScript gets run after UpdatePanel partial postback endRequest? - Stack Overflow

programmeradmin2浏览0评论

I know I can hook into the client side events to run JavaScript after every partial postback; however, I want to do something like this:

protected void FooClicked(object sender, EventArgs e) {
        ClientScript.RegisterStartupScript(GetType(), "msg", "showMsg('Foo clicked');",true);        
}

I know I could totally hack it with hidden fields and run something after every postback, but there should be a pretty straightfoward way to in a similar fashion to this.

I know I can hook into the client side events to run JavaScript after every partial postback; however, I want to do something like this:

protected void FooClicked(object sender, EventArgs e) {
        ClientScript.RegisterStartupScript(GetType(), "msg", "showMsg('Foo clicked');",true);        
}

I know I could totally hack it with hidden fields and run something after every postback, but there should be a pretty straightfoward way to in a similar fashion to this.

Share Improve this question asked May 22, 2009 at 20:11 MarkMark 10.2k7 gold badges40 silver badges39 bronze badges
Add a ment  | 

4 Answers 4

Reset to default 9

The specific code sample you are describing does not work with partial post-backs, since ClientScript.RegisterStartupScript() writes JS to the page during the output construction phase of the request lifecycle; whereas a partial postback only updates a selected portion of the page via JavaScript (even though the markup for the entire page, including your startup script, is generated on the server).

To closely mimic what you are describing, you ought to include a Literal control inside your UpdatePanel, and during partial postback set the Text property of the content panel to the script you wish to run:

myLiteral.Text = "<script type=\"JavaScript\">doStuff();</script>";

IMO, a more proper way is to use the client-side API for async postbacks to register an event handler to run when the postback pletes:

function endRequestHandler(sender, args) {
    doStuff();
}

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);

If you need to pass information which was generated during the postback into the handler, you can pass that via hidden fields and grab that from the DOM in your client-side handler.

This is much more elegant, IMO. apparently ASP AJAX will call any JS function named pageLoad. so write a function called pageLoad and it will be executed on every page load, even after partial update.

<script type="text/javascript" language="javascript">
    function ValidateUserRole() {  
        var answer = confirm("Are you sure..................")
        if (answer) {
            var btnRoleReleatedButton = '<%=btnRoleReleatedButton.ClientID%>';
            document.getElementById(btnRoleReleatedButton).click();
        }
        else {
            return false;
        }
    }
</script>

Tier 3 :<asp:UpdatePanel ID="upTier3Details" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:DropDownList ID="ddlTier3" runat="server" CssClass="ddlextralarge" Width="350" />
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="ddlUserRole" EventName="SelectedIndexChanged" />
    </Triggers>
</asp:UpdatePanel>

the best way to do this is to use the DoAfterPostBack control. you can download this control for free from here http://go2amitech.blogspot./2010/08/running-specific-javascript-after.html

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论