来自链接的jqgrid和弹出模式窗口

时间:2010-04-27 21:28:05

标签: asp.net jqgrid

我有一个jqgrid,我想在其中添加一个链接,以便在模态窗口中打开关于该行的更多详细信息。

我读到的关于模态窗口的所有内容都使用了一个div,当你点击链接时会显示,但我想传递一个id,这样我就能得到我需要的信息。我知道我可以很容易地使用一个新窗口,但我想使用模态窗口,如果可能的话。

我有什么想法可以做到这一点。我正在使用asp.net,如果那将是相关的。

干杯 路加

2 个答案:

答案 0 :(得分:3)

我建议使用jQuery UI Dialog插件来自定义模式窗口。您可以在这里找到演示和文档:

http://jqueryui.com/demos/dialog/

理论上,为了做你要求的事,你可以按照以下步骤操作:

  1. 在页面中添加“dialog”div标记。

  2. 构建数据Feed链接。如果您使用的是XML数据类型,请确保使用CDATA标志来封装链接,以便正确解析它们的XML。

    <电池>< ![CDATA并[d a href =“javascript:showDialog('551')”> text]]>< /电池>

    在这种情况下,由于我们知道链接创建时的实际ID,因此我预先填充了函数中的id(例如551)。也可以使用selrow属性从jqGrid API检索此内容。这是你的电话。如果您使用JSON数据类型,那么这个想法就会类似。您不必担心CDATA限定符。

  3. 创建一个本地函数(例如showDialog(id))以对应您的链接。
  4. showDialog函数中添加代码以填充并打开模式对话框。使用AJAX调用收集此记录的特定数据,创建对话框内容并使用jQuery .html方法填充对话框。

    function showDialog(id){

    $。AJAX({     url:“feed.aspx?id =”+ id,     成功:函数(数据){         var content = // TODO:在这里创建对话框布局

        $("#dialog").html(content);
    
        $("#dialog").dialog({
            title: 'Record Details',
            modal: true,
            closeOnEscape: true,
            width: 300,
            height: 200,
            buttons: false,
            position: "center",
        });
    
        $("#dialog").dialog("open");
    }
    

    }); }

  5. 这只是给猫皮肤的一种方法。您应该能够在创建链接时使用更多jQuery方法。如果需要,您可以添加jQuery单击事件绑定来处理请求,而不是构建数据源的特定链接。这是你的电话。你也可以使用jQuery动态地将对话框div添加到你的页面,而不是像我上面描述的那样手动放置它。它可能看起来更优雅,但会达到同样的目标。

答案 1 :(得分:1)

我正在尝试这么晚。可能你有答案。认为这将有助于其他人。

#dialog代码可以按照gurun8的建议完成。这需要连接到jqgrid。有一个onSelectRow事件,只要在jqgrid中选择了一行,就会触发该事件。请参阅documentation。我通常将autoOpen: false添加到对话框构造函数中。

您需要将onselectrow事件添加到网格(jqgrid函数,如下所示),您可以将id传递给函数。此id是jqgrid中的唯一标识符。确保没有语法错误,请在适当的地方添加逗号。

$s("#list").jqGrid({
...
  onSelectRow: function(id){
    console.log("row is selected"+id);
    $url = "your_url/";
    $s('#dialog').load($url);
    $s('#dialog').dialog('open');
  }
...
});