如何从Jquery对话框表单提交在父页面上调用回发?

时间:2015-02-20 14:45:39

标签: jquery asp.net vb.net jquery-ui webforms

我目前正在使用jQuery UI对话框,在用户点击链接后显示带有表单的对话框。我已经使用适当的aspx页面正确填充了jquery UI对话框。单击保存按钮时,我无法知道如何提交加载到对话框中的表单。现在我在加载的表单上调用按钮单击事件,它确实保存了数据,但随后它回发到对话框中加载的同一页面,但是在它自己的页面上。我想要的是在对话框中保存数据,然后刷新当前的aspx页面,打开jquery对话框所在的原始链接。

总而言之,我需要找到一种方法,当在jquery对话框上单击保存按钮时,我能够在我的代码后面调用click处理程序,不要从该调用返回响应,然后关闭对话框,并回发到父页面。

用于创建和打开对话框的Javascript:     $(document).ready(function(){              $( “#对话”)。对话框({                  autoOpen:false,                  莫代尔:是的,                  可调整大小:false,                  标题:“项目编辑”,                  纽扣: {                      “保存”:function(e){                          $('input#<%= btnSave.ClientID%>')。click();                      }                  }              });              $(“。item”)。on(“click”,function(){                  var itemId = $(this).attr(“itemId”);                  var url = window.location.protocol +“//”+
    window.location.host +“/ ItemEdit.aspx?itemId =”+ itemId;                 $( “#对话”)的负载(URL)。                 $( “#对话”)对话框( “开放”)。                 返回false;             });         });

表单加载到jquery对话框中:     <%@ Page Language =“vb”AutoEventWireup =“false”CodeBehind =“ItemEdit.aspx.vb”
    Inherits =“ItemEdit”%>                    项目编辑                                                                                                                                 项目:                                           
                     
                                                                                   />                                                                                                                                                                                                                                                                                                                                                          tabindex =“ - 1”style =“position:absolute; top:-1000px”/>                                      

加载到jquery对话框中的页面后面的代码:     Imports System.Data.OleDb     进口System.IO     Imports System.Data.SqlClient

Partial Public Class ItemEdit
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)  
Handles Me.Load
    If (Not Page.IsPostBack) Then
        If Request.QueryString("itemId") IsNot Nothing Then
            Dim itemId As String = Request.QueryString("itemId")
            Dim command As New OleDbCommand("SELECT * FROM items WHERE id = 
" & itemId, New OleDbConnection(ConnectionString))
            Try
                command.Connection.Open()
                Dim reader As OleDbDataReader = command.ExecuteReader()
                If reader.Read() Then
                    lblItem.Text = reader("item")
                    cbxMB.Checked = reader("mb")
                    cbxPP.Checked = reader("pp")
                    cbxB.Checked = reader("b")
                    cbxT.Checked = reader("t")
                    lblItemId.Text = reader("itemId")
                End If
                reader.Close()
            Finally
                command.Connection.Close()
            End Try
        End If
    End If
End Sub

Protected Sub btnSave_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles btnSave.Click
    Dim command As New OleDbCommand("UPDATE items SET b=" & 
Math.Abs(CInt(cbxB.Checked)) & ",t=" & Math.Abs(CInt(cbxT.Checked)) & ",mb=" 
& Math.Abs(CInt(cbxMB.Checked)) & ",pp=" & Math.Abs(CInt(cbxPP.Checked)) & " 
WHERE id=" & lblItemId.Text, New OleDbConnection(ConnectionString))
    Try
        command.Connection.Open()
        command.ExecuteNonQuery()
    Finally
        command.Connection.Close()
    End Try
End Sub
End Class

1 个答案:

答案 0 :(得分:0)

您希望在完成保存后返回父页面,对吗?

我会说

Response.Redirect("Parentpage.aspx")
尝试阻止之后

应该这样做。页面将重新加载,对话框将保持关闭状态。

编辑:

参考您的评论,我认为您必须通过JavaScript传递值,然后手动更新网格,以显示新值。

JS on Dialog:

function transferDataAndCloseDialog(item, mb, pp, b, t, itemId) {
 var retVal = new Object();
 retVal.Item = item;
 retVal.Mb = mb;
 retVal.Pp = pp;
 retVal.B = b;
 retVal.T = t;
 retVal.ItemId = itemId;

 window.parent.setDataAndCloseDialog(retVal);
}

CodeBehind Dialog(抱歉C#你必须适应): 在阅读完数据后,在btn_Click中调用它:

private void SetUpdateScript(string item, string mb, string pp, string b, string t, string itemId)
{
 string jScript = " $(document).ready(function () { "+
 " transferDataAndCloseDialog('"+item+"','"+mb+"','"+pp+"','"+b+"','"+t+"','"+itemId+"'); });";

 this.Page.ClientScript.RegisterClientScriptBlock(typeof(DialogPage), "UpdateScript", jScript, true);
}

JS主页:

function setDataAndCloseDialog(data) {
 //A function, where you use the data to update your grid:
 // you can access the values like "data.Item" etc.
 updateGrid(data);
 $("#dialog").dialog("close");
}