代码之家  ›  专栏  ›  技术社区  ›  Nasser Hadjloo

如何使用jquery激发服务器端方法

  •  3
  • Nasser Hadjloo  · 技术社区  · 16 年前

    我有一个大的应用程序,我要为它启用快捷键。我会找到2个jquery插件( demo plug-in 1 - Demo plug-in 2 )这样做是为了我。你可以找到他们两个 in this post in StackOverFlow

    我的应用程序是一个完整的应用程序,我打算向它添加一些功能,这样我就不想再编写代码了。

    因此,由于一个快捷键只是捕获一个组合键,我想知道如何调用一个快捷键应该触发的服务器方法?

    那么,如何通过调用我以前编写的方法来使用这些插件中的任何一个呢? 实际上,如何使用jquery触发服务器方法?

    你也可以找到一篇好文章 here, by Dave Ward


    更新: 这里是场景。当用户按ctrl+del时,gridview1“OnDelete”命令将显示

    protected void grdDocumentRows_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
        try
        {
            DeleteRow(grdDocumentRows.DataKeys[e.Item.ItemIndex].ToString());
            clearControls();
            cmdSaveTrans.Text = Hajloo.Portal.Common.Constants.Accounting.Documents.InsertClickText;
            btnDelete.Visible = false;
            grdDocumentRows.EditItemIndex = -1;
            BindGrid();
        }
        catch (Exception ex)
        {
            Page.AddMessage(GetLocalResourceObject("AProblemAccuredTryAgain").ToString(), MessageControl.TypeEnum.Error);
        }
    }
    
    private void BindGrid()
    {
        RefreshPage();
        grdDocumentRows.DataSource = ((DataSet)Session[Hajloo.Portal.Common.Constants.Accounting.Session.AccDocument]).Tables[AccDocument.TRANSACTIONS_TABLE];
        grdDocumentRows.DataBind();
    }
    
    private void RefreshPage()
    {
        Creditors = (decimal)((AccDocument)Session[Hajloo.Portal.Common.Constants.Accounting.Session.AccDocument]).Tables[AccDocument.ACCDOCUMENT_TABLE].Rows[0][AccDocument.ACCDOCUMENT_CREDITORS_SUM_FIELD];
        Debtors = (decimal)((AccDocument)Session[Hajloo.Portal.Common.Constants.Accounting.Session.AccDocument]).Tables[AccDocument.ACCDOCUMENT_TABLE].Rows[0][AccDocument.ACCDOCUMENT_DEBTORS_SUM_FIELD];
        if ((Creditors - Debtors) != 0)
            labBalance.InnerText = GetLocalResourceObject("Differentiate").ToString() + "‏" + (Creditors - Debtors).ToString(Hajloo.Portal.Common.Constants.Common.Documents.CF) + "‏";
        else
            labBalance.InnerText = GetLocalResourceObject("Balance").ToString();
    
        lblSumDebit.Text = Debtors.ToString(Hajloo.Portal.Common.Constants.Common.Documents.CF);
        lblSumCredit.Text = Creditors.ToString(Hajloo.Portal.Common.Constants.Common.Documents.CF);
    
        if (grdDocumentRows.EditItemIndex == -1)
            clearControls();
    }
    

    另一种情况是一样的。如何为这些代码启用快捷方式(使用会话、nhibernate等)

    1 回复  |  直到 16 年前
        1
  •  4
  •   Steve    16 年前

    这是直接从你提供的链接。

    在您的ASP.NET pg pagename.aspx中,您有一个用[webmethod]修饰的methodname。要从快捷方式调用methodname,请在javascript中执行如下操作:

    $(document).bind('keydown', 'Ctrl+c', zzz);  // hotkeys plugin
    
    function zzz() {
    
        $.ajax({
            type: "POST",
            url: "PageName.aspx/MethodName",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                // Update your pg accordingly
            }
        });
    }
    

    Upd:

    [WebMethod]
    public static void MethodName(int rownum)
    {
        DeleteRow(rownum.ToString());
        clearControls();
        cmdSaveTrans.Text = Hajloo.Portal.Common.Constants.Accounting.Documents.InsertClickText;
        btnDelete.Visible = false;
        grdDocumentRows.EditItemIndex = -1;
        BindGrid();
    }
    
    推荐文章