2

我看过的所有地方都显示了如何使用#name 格式从后面的代码执行 jQuery 对话框的示例,但是当对话框被创建为类时,我无法找到有关如何执行 jQuery 对话框的指导。

我的场景如下:vb.net web app with gridview 来呈现数据。当用户单击一行中的按钮时,我不想直接在 gridview 中编辑该行,而是要打开一个 jQuery 对话框,显示当前行数据。

在后面的代码中,我填充了与应该与 jQuery 对话框关联的 DIV 关联的文本框。到目前为止一切都很好。

我的问题是表单确实有几个用于显示数据的网格视图,其中有几个需要在对话框中编辑数据。因此,我没有为我需要编辑的每个 gridview 创建一个 jQuery 对话框,而是只创建了一个与一个类关联的 jQuery 对话框。

jQuery如下:

function FadingDialogAttachmentOpen(vDivId, vWidth) {
    $('#' + vDivId).dialog("open");
    if (vWidth == null) { vWidth = 300 };
    $('#' + vDivId).dialog("option", "width", vWidth);
    return false;
};

function FadingDialogAttachmentClose(vDivId) {
    $('#' + vDivId).dialog("close");
};

$(document).ready(function () {
    $('.FadingDialog').dialog({
        dialogClass: 'dialog_xms',
        modal: true,
        autoOpen: false,
        close: false,
        dragabble: true,
        resizable: false,
        show: 'fade',
        hide: 'fade',
        width: 300,

        open: function (type, data) {
            $(this).parent().appendTo('form');
        },

        buttons: {
            Cancelar: function () {
                f_tcalCancel();
                var a = this;
                $(this).dialog('close');
            },
            Ok: function () {
                var a = this;
                var btnId = $(this).attr('data-idButton');
                $(this).dialog("close");

                $('#MainContent_' + btnId).click();
            }
        }

    });
});

后面的表单代码,我使用如下:Page.ClientScript.RegisterStartupScript(Me.GetType(), "Popup", "FadingDialogAttachmentOpen('dialogEditPayments',500);", True)

我的问题是在创建对话框之前“打开”正在触发。如果我将 jQuery 中的代码更改为 #name 格式,则会显示该对话框。

任何想法将不胜感激。

问候, 爱丽儿

4

1 回答 1

0

我终于弄清楚了这一点。实现起来其实很简单。我想我会分享它,以防其他人面临同样的问题。最终解决方案如下:

  1. 初始化/显示/隐藏对话框的 javascript 函数完全如上所示
  2. 添加2个按钮;每个按钮都会弹出一个对话框
  3. 创建用作对话框内容的 DIV 的 HTML 如下:

    <div id="ThisIsATest1" class="FadingDialog" title="Dialog Box Example 1">
        This is a test
    </div>
    <div id="ThisIsATest2" class="FadingDialog" title="Dialog Box Example 2" 
        data-idButton="btnDialog">
        This is another test
    </div>
    
  4. 从每个按钮后面的代码中,使用以下句子:

    Page.ClientScript.RegisterStartupScript(Me.GetType(), "Popup", "$(function() {$('.FadingDialog').dialog();FadingDialogAttachmentOpen('" & pDivId & "'," & pWidth.ToString & “);});“, 真的)

  5. 将pDivId替换为对应DIV的ID即可显示;将 pWith.ToString 替换为您希望对话框的宽度

  6. 或者,您可以将相同的句子放在一个模块中,并调用一个为您放置客户端脚本指令的子程序(因此您不必为每个对话都这样做),如下所示:

    Public Sub fxDialogBox(pDivId As String, pWidth As Integer)
        Dim vPage As Page = HttpContext.Current.Handler
        vPage.ClientScript.RegisterStartupScript(Me.GetType(), "Popup", "$(function()
        {$('.FadingDialog').dialog();FadingDialogAttachmentOpen('" & pDivId & "'," &
        pWidth.ToString & ");});", True)
    End Sub
    
  7. 在后面的每个按钮代码中,您可以像这样调用函数:fx.fxDialogBox("ThisIsATest2", 700)

享受

于 2013-07-23T14:42:34.890 回答