1

我下面的代码工作正常,除非单击“继续”按钮时它不会发送 true 值。

<script type="text/javascript">
    function EmpDelete(f_name) {
        $("#fName").text(f_name);
        $('#dialog').dialog({            
            title: "Delete Employee?",            
            modal: true,
            width: 500,
            height: 250,            
            buttons: {
                "Cancel": function () {
                    $(this).dialog("close");
                },
                "Continue": function () {                    
                    $(this).dialog("close");
                    // return true;
                }                
            }            
        });                        
        return false;
    };    
</script>

当单击 imgDelete ImageButton 时,将调用上述 jQuery 事件。

e.Row.Cells[iDelete].Controls.Add
    (new ImageButton
    {
        ImageUrl = "Images/database_delete.png",
        CommandArgument = e.Row.RowIndex.ToString(),
        CommandName = "Delete",
        ID = "imgDelete",
        CssClass = "imgDelete",                 
        OnClientClick = "return EmpDelete('" + e.Row.Cells[iFNmae].Text + "');",    
        ClientIDMode = System.Web.UI.ClientIDMode.Static
    });

如何使 jQuery 上的“继续”按钮返回 true 值,以便我的“RowCommend”事件可以进行进一步的处理?

protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Delete")
    {

    } 
}
4

3 回答 3

1

尝试查看 ClientScriptManager.GetPostBackEventReference 方法 http://msdn.microsoft.com/en-us/library/ms153112.aspx

有关如何使用它的说明,请参见以下帖子... asp:jQuery 对话框中的按钮未触发 OnClick 事件

我没有用它来传递 CommandArgument,但是该方法有第二个参数,它表明它是用于“参数”的。您可以尝试在该参数参数中传递您的 True 值,看看是否可以在 RowCommand 事件处理程序中捕获它。

于 2013-05-16T15:51:46.867 回答
1

我意识到我做了类似的事情,并回顾了我的代码,看看为什么我没有使用我在另一个答案中提到的第二个“参数”参数。

就我而言,我有一个中继器,而不是一个 GridView。每行中的一个按钮触发了 jQuery UI 对话框弹出。然而,即使我有多个行,我也只有一个 jQuery UI 对话框;它的内容根据按下了哪一行的按钮而改变。我的对话框有表单字段,所以当按下对话框按钮时,我会调用 GetPostBackEventReference() 方法生成的 javascript 函数。由于正在提交对话框表单中的字段,因此我不需要指定任何参数。

我的观点是,在您的情况下,您可能只需在对话框中创建一个 HiddenField,而不是使用我在其他答案中提到的第二个“参数”参数。如果您在对话框中提交表单字段,那么您将能够在 RowCommand 事件处理程序中捕获该 HiddenField。只需在启动 PostBack 之前将其值设置为 True。在您的情况下,我假设您还需要一个隐藏字段来确定应该删除哪个员工(某种类型的 EmployeeID 值)。

于 2013-05-16T16:34:45.207 回答
0

我通过使用__doPostBack(uniqueID, '');jQuery“继续”按钮解决了这个问题

在我添加的 Page_Load() 事件上

 if (!Page.IsPostBack)
    {
        ClientScript.GetPostBackEventReference(gvEmployee, string.Empty);
    }

我在 Gridview_RowDataBound 事件上调用了 jQuery 对话框

e.Row.Cells[iDelete].Controls.Add
            (new ImageButton
            {
                ImageUrl = "Images/database_delete.png",
                CommandArgument = e.Row.RowIndex.ToString(),
                CommandName = "Delete",
                ID = "imgEmpDelete" + e.Row.Cells[iID].Text,
                **OnClientClick = "javascript:return rowAction(this.name)",**
                ClientIDMode = System.Web.UI.ClientIDMode.Static
            });

希望它可以帮助任何人。

于 2013-05-17T23:45:29.920 回答