zoukankan      html  css  js  c++  java
  • 使用__doPostBack函数回送表单.

    在asp.net中服务器控件回送表单是通过调用__doPostBack函数来回送表单,触发事件的,先来看看__doPostBack函数:
    function __doPostBack(eventTarget, eventArgument) {
        if (theForm.onsubmit == null || theForm.onsubmit()) {
            theForm.__EVENTTARGET.value = eventTarget;
            theForm.__EVENTARGUMENT.value = eventArgument;
            theForm.submit();
        }
    }
    第一个参数是控件名称,第二个参数包含事件的额外信息.
    这个使用例子中,含有一个hiddenfield隐含控件和的一个linkbutton控件,hiddenfield用于保存要存接收的值,linkbutton用于触发点击事件void lbtnDeleteDiscussion_Click(object sender, EventArgs e)
    例:
    ****
    <asp:hiddenfield id="hidfDiscussionId" runat="server" />
    <asp:linkbutton id="lbtnDeleteDiscussion" runat="server" onclick="lbtnDeleteDiscussion_Click"></asp:linkbutton>
    *******************
        void lbtnDeleteDiscussion_Click(object sender, EventArgs e)
        {
            string[] roles = SiteSettings.Instance.ReviewAdminRoles.Split(',');
            bool isDelete = false;
            foreach (string role in roles)
            {
                if (HttpContext.Current.User.IsInRole(role))
                {
                    isDelete = true;
                    break;
                }
            }
            if (isDelete)
            {
                if (!string.IsNullOrEmpty(hidfDiscussionId.Value))
                {
                    int discussionId = int.Parse(hidfDiscussionId.Value);
                    DiscussionManager.RemoveDiscussionItem(discussionId);
                    Response.Redirect(Request.RawUrl);
                }
            }
        }
    void Page_Load(object sender, EventArgs e)
    {
        ....
        sb.Remove(0, sb.Length);
        sb.Append("function DeleteDiscussion(discussionId){");
        sb.AppendFormat("confirm('{0}');", "确定要删除这条讨论吗?");
        sb.AppendFormat("document.all('{0}').value = discussionId;", hidfDiscussionId.ClientID);
        sb.AppendFormat("__doPostBack('{0}','');", lbtnDeleteDiscussion.ClientID.Replace('_', '$'));
        sb.Append("}");
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "DeleteDiscussion", sb.ToString(), true);
    }
    ****************
    现在在客户端使用HTML代码也可以可以触发指定的服务器端事件并且传递一些值了.
    如:
     sb.AppendFormat("<a href=\"javascript:DeleteDiscussion('{0}');\">",item.DiscussionId);
     sb.AppendFormat("<img src='{0}' alt='{1}' border='{2}' />",
    CommerceContext.GetThemesImagePathForImgTag("Common/button_delete.gif"),
     "删除讨论","0");
    sb.Append("</a>");

    这里使用html代码也以触发一个删除事件,把指定的项删除.
    这个例子是我上一篇Blog的相关内容,给合Cilent CallBack可以实现无刷新地动态生成的html代码,并可以触发服务器端事件
  • 相关阅读:
    redis线程模型
    同步容器和并发容器
    200+面试题
    redis pipeline
    redis事务和脚本
    redis事务
    redis优缺点
    redis持久化策略
    Redis为什么要把所有数据放到内存中?
    redis的过期策略以及内存淘汰机制
  • 原文地址:https://www.cnblogs.com/chenjunbiao/p/1760282.html
Copyright © 2011-2022 走看看