2010-10-24 62 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和關閉檢測