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的教程

相关文章
相关标签/搜索