我有一个大型应用程序,我要为其启用快捷键。我找到了 2 个 JQuery 插件( demo plug-in 1 - Demo plug-in 2 )来为我做这件事。你可以找到它们 in this post in StackOverFlow
我的应用程序已经完成,我将向其添加一些功能,因此我不想再次编写代码。
因此,由于快捷键只是捕获组合键,我想知道如何调用快捷键应触发的服务器方法?
那么如何通过调用我之前编写的方法来使用这两个插件呢? 实际上如何使用 Jquery 触发服务器方法?
还可以找到好文章here, by Dave Ward
<小时/>更新:这是场景。当用户按 CTRL+Del GridView1_OnDeleteCommand 时,我有这个
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();
}
其他场景相同。如何为此类代码启用快捷方式(使用 session 、NHibernate 等)
最佳答案
这直接来自您提供的链接。
在您的 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
}
});
}
更新:
[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();
}
关于.net - 如何使用 jQuery 触发服务器端方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2996293/