• 使用__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代码,并可以触发服务器端事件
  • 相关阅读:
    shell_02
    shell_practise
    Shell_01
    PythonDay_03
    PythonDay_02
    PythonDay_01
    面试题32:从上到下打印二叉树
    面试题 31 : 栈的压入、弹出序列
    面试题20 : 表示数值的字符串
    面试题29:顺时针打印矩阵
  • 原文地址:https://www.cnblogs.com/chenjunbiao/p/1760282.html
Copyright © 2020-2023  润新知