jQuery对话框如何在单击按钮时传递“True”

时间:2013-05-16 15:44:00

标签: jquery asp.net c#-4.0 onclick

我的下面的代码工作正常,除非单击“继续”按钮时它不会发送值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上的“Continue”按钮返回值true,以便我的“RowCommend”事件可以进一步处理?

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

    } 
}

3 个答案:

答案 0 :(得分:1)

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

有关如何使用它的说明,请参阅以下帖子... asp:Button in jQuery dialog box not firing OnClick event

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

我在jQuery“继续”按钮和

上使用__doPostBack(uniqueID, '');解决了这个问题

在Page_Load()事件上我添加了

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

我在Gridview_RowDataBound事件上调用了jQuery Dialog

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
            });

希望它可以帮助任何人。