Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Jquery对话框表单提交调用父页面上的回发?_Jquery_Asp.net_Vb.net_Jquery Ui_Webforms - Fatal编程技术网

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

如何从Jquery对话框表单提交调用父页面上的回发?,jquery,asp.net,vb.net,jquery-ui,webforms,Jquery,Asp.net,Vb.net,Jquery Ui,Webforms,我目前正在使用jQueryUIDialog在用户单击链接后显示带有表单的对话框。我已经用适当的aspx页面正确地填充了jqueryui对话框。当单击“保存”按钮时,我不知道如何提交加载到对话框中的表单。现在,我在加载的表单上调用button click事件,它确实保存了数据,但随后它会发回对话框中加载的同一页面,但在它自己的页面上。我想要的是在对话框中保存数据,然后刷新打开jquery对话框的原始链接所在的当前aspx页面 总之,我需要找到一种方法,当在jquery对话框上单击save按钮时,我

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

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

用于创建和打开对话框的Javascript: $document.readyfunction{ $dialog.dialog{ 自动打开:错误, 莫代尔:是的, 可调整大小:false, 标题:项目编辑, 按钮:{ 保存:函数e{ $‘输入’。单击; } } }; $.item.onclick,函数{ var itemId=$this.attritemId; var url=window.location.protocol+//+ window.location.host+/ItemEdit.aspx?itemId=+itemId; $dialog.loadurl; $dialog.dialogopen; 返回false; }; };

加载到jquery对话框中的表单: 项目编辑 项目: /> tabindex=-1 style=位置:绝对值;顶部:-1000px/>

加载到jquery对话框的页面的代码隐藏: 导入System.Data.OleDb 导入System.IO 导入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

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

我会说

Response.Redirect("Parentpage.aspx")
试过之后,试块应该会这样做。页面将被重新加载,对话框将保持关闭状态

编辑:

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

对话框上的JS:

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);
}
代码隐藏对话框C您必须适应: 读取数据后,在btn_单击中调用此选项:

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

正确,我想导航回父页面。然而,仅仅重定向到该页面将丢失滚动位置并重置当前页面上的所有内容,我真正想要的是执行回发到父页面,这将使页面保持与以前一样,但更新对话框表单更新的表。我改进了我的答案。