jQuery EasyUI使用教程之建立展開行詳細編輯表單的CRUD應用

當切換datagrid視圖到"detailview"時,用戶能夠展開一行來顯示該行下面的任何詳細信息。此功能容許用戶爲放置在行詳細信息面板中的編輯表單提供恰當的佈局。在本教程中,咱們使用DataGrid組件來減小編輯表單所佔用的空間。php

構建CRUD DataGrid

查看演示html

Step 1:在HTML標記中建立DataGrid

<table id="dg" title="My Users" style="width:550px;height:250px"服務器

url="get_users.php"app

toolbar="#toolbar"函數

fitColumns="true" singleSelect="true">佈局

<thead>post

<tr>ui

<th field="firstname" width="50">First Name</th>this

<th field="lastname" width="50">Last Name</th>url

<th field="phone" width="50">Phone</th>

<th field="email" width="50">Email</th>

</tr>

</thead>

</table>

<div id="toolbar">

<a href="#" class="easyui-linkbutton" iconCls="icon-add" plain="true" onclick="newItem()">New</a>

<a href="#" class="easyui-linkbutton" iconCls="icon-remove" plain="true" onclick="destroyItem()">Destroy</a>

</div>

Step 2:爲DataGrid應用詳細視圖

$( '#dg' ).datagrid({
view: detailview,
detailFormatter: function (index,row){
return '<div class="ddv"></div>' ;
},
onExpandRow:  function (index,row){
var ddv = $( this ).datagrid( 'getRowDetail' ,index).find( 'div.ddv' );
ddv.panel({
border: false ,
cache: true ,
href: 'show_form.php?index=' +index,
onLoad: function (){
$( '#dg' ).datagrid( 'fixDetailRowHeight' ,index);
$( '#dg' ).datagrid( 'selectRow' ,index);
$( '#dg' ).datagrid( 'getRowDetail' ,index).find( 'form' ).form( 'load' ,row);
}
});
$( '#dg' ).datagrid( 'fixDetailRowHeight' ,index);
}
});

若要使用DataGrid的詳細視圖,那麼就在html 頁面頭部引入"datagrid-detailview.js"文件。

咱們使用"detailFormatter"函數來生成行詳細信息內容。在這種狀況下,咱們返回一個用於放置編輯表單的空的 。當用戶點擊該行展開按鈕("+")時,"onExpandRow"事件將被觸發,咱們能夠經過AJAX加載編輯表單。使用getRowDetail方法能夠得到該行的詳細信息容器,所以咱們可以查找到該行的詳細信息面板。在行詳細信息中建立面板,並從"show_form.php"中加載返回的編輯表單。

Step 3:建立編輯表單

從服務器中加載編輯表單。

show_form.php

<form method= "post" >
<table  class = "dv-table" style= "width:100%;background:#fafafa;padding:5px;margin-top:5px;" >
<tr>
<td>First Name</td>
<td><input name= "firstname" class = "easyui-validatebox" required= "true" ></input></td>
<td>Last Name</td>
<td><input name= "lastname" class = "easyui-validatebox" required= "true" ></input></td>
</tr>
<tr>
<td>Phone</td>
<td><input name= "phone" ></input></td>
<td>Email</td>
<td><input name= "email" class = "easyui-validatebox" validType= "email" ></input></td>
</tr>
</table>
<div style= "padding:5px 0;text-align:right;padding-right:30px" >
<a href= "#" class = "easyui-linkbutton" iconCls= "icon-save" plain= "true" onclick= "saveItem(<?php echo $_REQUEST['index'];?>)" >Save</a>
<a href= "#" class = "easyui-linkbutton" iconCls= "icon-cancel" plain= "true" onclick= "cancelItem(<?php echo $_REQUEST['index'];?>)" >Cancel</a>
</div>
</form>

Step 4:保存或取消編輯

調用"saveItem"函數來保存用戶,或調用"cancelItem"函數來取消編輯。

function saveItem(index){
var row = $( '#dg' ).datagrid( 'getRows' )[index];
var url = row.isNewRecord ?  'save_user.php' 'update_user.php?id=' +row.id;
$( '#dg' ).datagrid( 'getRowDetail' ,index).find( 'form' ).form( 'submit' ,{
url: url,
onSubmit:  function (){
return $( this ).form( 'validate' );
},
success:  function (data){
data = eval( '(' +data+ ')' );
data.isNewRecord =  false ;
$( '#dg' ).datagrid( 'collapseRow' ,index);
$( '#dg' ).datagrid( 'updateRow' ,{
index: index,
row: data
});
}
});
}

肯定首先要發佈哪個URL,而後查找表單對象,並調用"submit"方法來提交表單數據。當數據保存成功後,收起並更新行數據。

function cancelItem(index){
var row = $( '#dg' ).datagrid( 'getRows' )[index];
if (row.isNewRecord){
$( '#dg' ).datagrid( 'deleteRow' ,index);
else {
$( '#dg' ).datagrid( 'collapseRow' ,index);
}
}

當取消編輯操做時,若是該行是新行並且尚未保存,那麼直接刪除該行,不然收起該行。

下載EasyUI示例:easyui-crud-demo.zip

>>jQuery EasyUI試用版下載地址<<

有興趣的朋友能夠點擊查看更多有關jQuery EasyUI的教程

相關文章
相關標籤/搜索