2010-10-24 66 views
0

我想创建一个脚本使用FLEXIGRID作为显示来自数据库的信息的方法,但我希望用户也能够输入信息到数据库中。我希望能够启动一个模式窗口,供用户输入信息并提交。在FLEXIGRID的按钮进行编码的方法是如下:flexigrid popup模式窗口

$(document).ready(function(){ 

$("#flex1").flexigrid 
    (
    { 
    url: 'post2.php', 
    dataType: 'json', 
    colModel : [ 
    {display: 'ID', name : 'id', width : 40, sortable : true, align: 'center', hide: true}, 
...... 
    buttons : [ 
    {name: 'Add', bclass: 'add', onpress : test}, 
    {separator: true}, 
    {name: 'Delete', bclass: 'delete', onpress : test}, 
    {separator: true}, 
.... some more code ... 

    } 
    ); 

}); 
function test(com,grid) 
{ 
    if (com=='Add') 
    { 
       the code that triggers the modal window 
    } 
} 

好吧,我的问题:

当我按下“添加”,我想一个模式弹出窗口出现使用Ajax加载本地文件的内容,以便用户可以输入信息。

我到目前为止有:

我使用的代码从JqModal尝试: 加载CSS和Javascript:

<link rel="stylesheet" type="text/css" href="css/jqmodal.css" /> 
<script type="text/javascript" src="js/jqModal.js"></script> 
$().ready(function() { 
$('#ex2').jqm({ajax: 'examples/2.html', trigger: 'a.ex2trigger'}); 
}); 

添加的格在页面的底部:

<div class="jqmWindow" id="ex2"> 
Please wait... <img src="inc/busy.gif" alt="loading" /> 
</div> 

但如何触发该功能?

谢谢, 克里斯蒂安。

LE:这是我现在所拥有的代码,它仍然不工作:

IE说:对象不支持此属性或方法flexigrid,行56字5这正是在$对话框功能启动。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> 
<title>Flexigrid</title> 
<link rel="stylesheet" type="text/css" href="css/flexigrid.css" /> 
<link rel="stylesheet" type="text/css" href="css/jquery-ui-1.7.3.custom.css" /> 
<script type="text/javascript" src="js/jquery-1.2.3.pack.js"></script> 
<script type="text/javascript" src="js/flexigrid.js"></script> 
<script type="text/javascript" src="js/jquery-ui-1.7.3.custom.min.js.js"></script> 
<script type="text/javascript"> 

$(document).ready(function(){ 

    $("#flex1").flexigrid 
      (
      { 
      url: 'post2.php', 
      dataType: 'json', 
      colModel : [ 
       {display: 'ID', name : 'id', width : 40, sortable : true, align: 'center', hide: true}, 
       {display: 'URL', name : 'url', width : 450, sortable : true, align: 'left'}, 
       {display: 'File Name', name : 'filename', width : 270, sortable : true, align: 'left'}, 
       {display: 'Availability', name : 'availability', width : 50, sortable : true, align: 'center'}, 
       {display: 'State', name : 'state', width : 40, sortable : true, align: 'center'}, 
       {display: 'Total Size', name : 'totalsize', width : 90, sortable : false, align: 'center'}, 
       {display: 'Current Size', name : 'currentsize', width : 90, sortable : false, align: 'center'}, 
       {display: 'Procent', name : 'procent', width : 40, sortable : true, align: 'center'}, 
       {display: 'Log', width : 20, sortable : false, align: 'center'}, 
       ], 
      buttons : [ 
       {name: 'Add', bclass: 'add', onpress : test}, 
       {separator: true}, 
       {name: 'Delete', bclass: 'delete', onpress : test}, 
       {separator: true}, 
       {name: 'Select All', bclass : 'selectall', onpress : test}, 
       {name: 'DeSelect All', bclass : 'deselectall', onpress : test}, 
       {separator: true} 
       ], 
      searchitems : [ 
       {display: 'URL', name : 'url'}, 
       {display: 'Filename', name : 'filename', isdefault: true} 
       ], 
      sortname: "state", 
      sortorder: "asc", 
      usepager: true, 
      title: '', 
      useRp: false, 
      rp: 10, 
      showTableToggleBtn: true, 
      singleSelect: true 
      } 
      ); 
}); 
$(document).ready(function() { 
    $("#myDialog").dialog({ 
     autoOpen: false, 
     resizable: false, 
     position: 'center', 
     stack: true, 
     height: 'auto', 
     width: 'auto', 
     modal: true 
    }); 

    $("#showDialog").button().click(function (event) { 
     $("#myDialog").dialog('open'); 
    }); 
}); 
function test(com,grid) 
{ 
    if (com=='Add') { 
     $("#myDialog").dialog('open'); 
    } 
    if (com=='Select All') 
    { 
     $('.bDiv tbody tr',grid).addClass('trSelected'); 
    } 

    if (com=='DeSelect All') 
    { 
     $('.bDiv tbody tr',grid).removeClass('trSelected'); 
    } 

    if (com=='Delete') 
     { 
      if($('.trSelected',grid).length>0){ 
       if(confirm('Delete ' + $('.trSelected',grid).length + ' items?')){ 
        var items = $('.trSelected',grid); 
        var itemlist =''; 
        for(i=0;i<items.length;i++){ 
         itemlist+= items[i].id.substr(3)+","; 
        } 
        $.ajax({ 
         type: "POST", 
         url: "delete.php", 
         data: "items="+itemlist, 
         success: function(data){ 
         $('#flex1').flexReload(); 
         alert(data); 
         } 
        }); 
       } 
      } else { 
       return false; 
      } 
     }   
} 
</script> 
</head> 

<body> 
<table id="flex1" style="display:none"></table> 
<div id="myDialog" style="display:none" title=""></div> 
</body> 
</html> 

LE2:如何加载外部文件直通AJAX:

$(document).ready(function(){ 
    //define config object 
    var dialogOpts = { 
     modal: true, 
     bgiframe: true, 
     autoOpen: false, 
     height: 500, 
     width: 500, 
     draggable: true, 
     resizeable: true, 
     open: function() { 
     //display correct dialog content 
     $("#myDialog").load("form.php");} 
     }; 
    $("#myDialog").dialog(dialogOpts); //end dialog 

    $('#showdialog').click(function (event){ 
      $("#myDialog").dialog("open"); 
      return false; 
     } 
    ); 

}); 

回答

2

下面的示例将与jQuery UI的合作对话

首先定义了对话所需要的标记:

<div id="myDialog" style="display:none" title=""></div> 

然后,在DOM ready,setup该对话框是一个jQuery UI对话框

$("#myDialog").dialog({ 
    autoOpen: false, position: 'center', stack: true, height: 'auto', width: 'auto', modal: true 
}); 

请注意autoOpen: false参数。

当你想显示对话框只需要调用的代码里面的open方法

function test(com,grid) { 
    if (com=='Add') { 
     $("#myDialog").dialog('open'); 
    } 
} 

希望它能帮助!

更新

我已经创建了一个jsbin.com样品给你。你可以看到它工作here,而你可以看到代码here

+0

洛伦佐嗨,可惜我不能让它开始工作,如果我复制/粘贴你的代码,网格甚至不会加载。注意确定要说什么。谢谢,C。 – Chris19 2010-10-24 13:47:47

+0

您是否包含jQuery UI JavaScript文件和css? – Lorenzo 2010-10-24 13:52:09

+0

看看我的最新答案 – Lorenzo 2010-10-24 14:06:57

0

如果您使用Visual Studio 2008作为jQuery使用css3验证,则Chris19是由于css类导致的此错误。VS2008不支持css3验证,因此jQuery css的某些元素是未知的。

快速的解决办法是进入工具 - >选项 - >显示所有复选框 - >文本编辑器 - >的CSS - >具体的css和关闭检测