grid

grid

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  78 Posts :: 0 Stories :: 62 Comments :: 0 Trackbacks

#

CRUD之:行内表单编辑
            
           

参考示例CRUD之:行内表单编辑
            
           

一:创建编辑表单

<div id="editForm1" style="display:none;padding:5px;position:relative;">
    <input class="mini-hidden" name="id"/>
    <table style="width:100%;">
        <tr>
            <td style="width:80px;">员工帐号:</td>
            <td style="width:150px;"><input name="loginname" class="mini-textbox" /></td>
            <td style="width:80px;">姓名:</td>
            <td style="width:150px;"><input name="name" class="mini-textbox" /></td>
            <td style="width:80px;">薪资:</td>
            <td style="width:150px;"><input name="salary" class="mini-textbox" /></td>
        </tr>
        <tr>
            <td>性别:</td>
            <td><input name="gender" class="mini-combobox" data="Genders"/></td>
            <td>年龄:</td>
            <td><input name="age" class="mini-spinner" minValue="0" maxValue="200" value="25"  /></td>
            <td>出生日期:</td>
            <td><input name="birthday" class="mini-datepicker" /></td>
        </tr>
        <tr>
            <td style="text-align:right;padding-top:5px;padding-right:20px;" colspan="6">
                <a class="Update_Button" href="javascript:updateRow();">Update</a> 
                <a class="Cancel_Button" href="javascript:cancelRow();">Cancel</a>
            </td>                
        </tr>
    </table>
</div>
         

二:嵌入详细行

 //显示行详细
grid.hideAllRowDetail();
grid.showRowDetail(row);
//将editForm元素,加入行详细单元格内
var td = grid.getRowDetailCellEl(row);
td.appendChild(editForm);
editForm.style.display = "";
          

三:加载表单

var form = new mini.Form("editForm1");
if (grid.isNewRow(row)) {    
    form.reset();
    } else {    
        form.loading();    
        $.ajax({        
            url: "../data/DataService.aspx?method=GetEmployee&id=" + row.id,        
            success: function (text) {            
                var
o = mini.decode(text);            
                form.setData(o); form.unmask();        
           }     
     });
}
           

四:提交表单

var form = new mini.Form("editForm1");
var o = form.getData(); grid.loading("保存中,请稍后......");
var json = mini.encode([o]);
$.ajax({     
    url: "../data/DataService.aspx?method=SaveEmployees",    
    data: { employees: json },    
    success: function (text) {        
        grid.reload();    
    },
    error: function (jqXHR, textStatus, errorThrown) {        
        alert(jqXHR.responseText);    
    }
});
posted @ 2012-09-17 21:16 nikofan 阅读(1801) | 评论 (0)编辑 收藏

CRUD之:行编辑
            
                     

参考示例CRUD之:行编辑         

一:创建单元格编辑器

<div id="datagrid1" class="mini-datagrid" style="width:700px;height:280px;"
url="../data/DataService.aspx?method=SearchEmployees">
    <div property="columns">
        <div name="action" width="120" headerAlign="center" align="center" renderer="onActionRenderer" cellStyle="padding:0;">#</div>
        <div field="loginname" width="120" headerAlign="center" allowSort="true">员工帐号
            <input property="editor" class="mini-textbox" />
        </div>
        <div field="gender" width="100" allowSort="true" renderer="onGenderRenderer" align="center" headerAlign="center">性别
            <input property="editor" class="mini-combobox" style="width:100%;" data="[{id:1,text:'男'}, {id:2, text: '女'}]"/>
        </div>
        <div field="age" width="100" allowSort="true">年龄
            <input property="editor" class="mini-spinner" minValue="0" maxValue="200" value="25" style="width:100%;"/>
        </div>
        <div field="birthday" width="100" allowSort="true" dateFormat="yyyy-MM-dd">出生日期
            <input property="editor" class="mini-datepicker" style="width:100%;"/>
        </div>
        <div field="createtime" width="100" headerAlign="center" dateFormat="yyyy-MM-dd" allowSort="true">创建日期</div>
    </div>
</div>
比如:mini-textbox的property为"editor",表示是此列的编辑器。            

二:编辑操作

开始编辑行:
grid.beginEditRow(row);

取消编辑:
grid.cancelEdit();
提交编辑数据:
var rowData = grid.getEditRowData(row);
grid.loading("保存中,请稍后......");
var json = mini.encode([rowData]);
    $.ajax({
    url: "../data/DataService.aspx?method=SaveEmployees",
    data: { employees: json },
    success: function (text) {
        grid.reload();
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert(jqXHR.responseText);
    }
});
posted @ 2012-09-13 18:45 nikofan 阅读(2354) | 评论 (0)编辑 收藏

CRUD之:单元格编辑
            
                     

参考示例单元格编辑


一:创建单元格编辑器
<div id="datagrid1" class="mini-datagrid" style="width:800px;height:280px;" 
    url="../data/AjaxService.aspx?method=SearchEmployees" idField="id"
    allowResize="true" pageSize="20" 
    allowCellEdit="true" allowCellSelect="true" multiSelect="true">
    <div property="columns">
        <div type="checkcolumn"></div>            
        <div field="loginname" width="120" headerAlign="center" allowSort="true">员工帐号
            <input property="editor" class="mini-textbox" style="width:100%;"/>
        </div>                
        <div field="gender" width="100" renderer="onGenderRenderer" align="center" headerAlign="center">性别
            <input property="editor" class="mini-combobox" style="width:100%;" data="Genders"/>                
        </div>
        <div field="age" width="100" allowSort="true" >年龄
            <input property="editor" class="mini-spinner" minValue="0" maxValue="200" value="25" style="width:100%;"/>
        </div>
        <div field="birthday" width="100" allowSort="true" dateFormat="yyyy-MM-dd">出生日期
            <input property="editor" class="mini-datepicker" style="width:100%;"/>
        </div>    
        <div field="remarks" width="120" headerAlign="center" allowSort="true">备注
            <input property="editor" class="mini-textarea" style="width:100%;" minHeight="80"/>
        </div>                                 
        <div field="createtime" width="100" headerAlign="center" dateFormat="yyyy-MM-dd" allowSort="true">创建日期</div>
    </div>
</div>
设置allowCellEdit和allowCellSelect后,表格为单元格编辑模式。            

二:编辑操作          

增加行:

function addRow() {
    var newRow = { name: "New Row" };
    grid.addRow(newRow, 0);
}
删除行:
function removeRow() {
     var rows = grid.getSelecteds();    
     if (rows.length > 0) {
          grid.removeRows(rows,
true);    
     }
}           

保存数据:

function saveData() {
    //获得增加、删除、修改的记录集合
    var data = grid.getChanges();
    var json = mini.encode(data);
    grid.loading("保存中,请稍后......");        
    $.ajax({
        url: "../data/AjaxService.aspx?method=SaveChangedEmployees",
        data: { data: json },
        type: "post",
        success: function (text) {
            grid.reload();
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert(jqXHR.responseText);
        }
    });
}
          

三:服务端处理

public void SaveChangedEmployees()
{
    String json = Request["data"];
    ArrayList rows = (ArrayList)PluSoft.Utils.JSON.Decode(json);

    foreach (Hashtable row in rows)
    {
        //根据记录状态,进行不同的增加、删除、修改操作
        String state = row["_state"] != null ? row["_state"].ToString() : "";
        if(state == "added")
        {
            row["createtime"] = DateTime.Now;
            new TestDB().InsertEmployee(row);
        }
        else if (state == "removed" || state == "deleted")
        {
            String id = row["id"].ToString();
            new TestDB().DeleteEmployee(id);
        }
        else if (state == "modified")
        {
            new TestDB().UpdateEmployee(row);
        }
    }
}
       
posted @ 2012-09-12 18:55 nikofan 阅读(2058) | 评论 (0)编辑 收藏

下面实现一个最典型主框架布局。
效果图如下:
                           

一:创建界面布局

<!--Layout-->
<div id="layout1" class="mini-layout" style="width:100%;height:100%;">
    <div class="header" region="north" height="70" showSplit="false" showHeader="false">
    </div>
    <div title="south" region="south" showSplit="false" showHeader="false" height="30" >    
    </div>
    <div title="center" region="center" bodyStyle="overflow:hidden;">    
        <!--Splitter-->
        <div class="mini-splitter" style="width:100%;height:100%;" borderStyle="border:0;">
            <div size="180" maxSize="250" minSize="100" showCollapseButton="true">
                
            </div>
            <div showCollapseButton="false">
                
            </div>        
        </div>
    </div>
</div>    
其中,Layout实现上、中、下布局;Splitter实现左、右折叠布局。                      

二:创建OutlookTree           

创建OutlookTree控件,放入Splitter左侧区域,作为功能操作树。

<!--OutlookTree-->
<div id="leftTree" class="mini-outlooktree" url="../data/outlooktree.txt" onnodeselect="onNodeSelect"
    textField="text" idField="id" parentField="pid">
</div>          

url从服务端返回JSON格式如下:

[
    {id: "user", text: "用户管理"},        
    {id: "lists", text: "Lists", pid: "user" },            
    {id: "datagrid", text: "DataGrid", pid: "lists"},            
    {id: "tree", text: "Tree" , pid: "lists"},
    ......
]
通过 "id" 和 "pid" 组成树形结构,在创建OutlookTree时注意设置 "idField" 和 "parentField" 。           

三:创建Tabs         

创建Tabs控件,放入Splitter右侧区域,作为主操作区域。

<!--Tabs-->
<div id="mainTabs" class="mini-tabs bg-toolbar" activeIndex="0" style="width:100%;height:100%;"      
    bodyStyle="border:0;background:white;"      
>        
    <div title="首页" url="../../docs/api/overview.html" >        
    </div>
</div>                      

四:监听处理"nodeselect"事件

function showTab(node) {
    var tabs = mini.get("mainTabs");            
    var id = "tab$" + node.id;
    var tab = tabs.getTab(id);
    if (!tab) {
        tab = {};
        tab.name = id;
        tab.title = node.text;
        tab.showCloseButton = true;
        tab.url = node.url;
        tabs.addTab(tab);
    }
    tabs.activeTab(tab);
}        

function onNodeSelect(e) {
    var node = e.node;
    var isLeaf = e.isLeaf;            

    if (isLeaf) {
        showTab(node);
    }
}
参考示例:                       
posted @ 2012-09-11 20:11 nikofan 阅读(3323) | 评论 (0)编辑 收藏

表单开发包括:布局、验证、加载、提交、清除、重置等。
效果图如下:
                   
      
表单布局
使用HTML Table标签实现任意丰富的表单布局:
<table class="form-table" border="0" cellpadding="1" cellspacing="2">
     <
tr>
         <
td class="form-label" style="width:60px;">姓名:</td
         <
td style="width:150px">
            <
input name="name" class="mini-textbox" /> </td>
         <
td class="form-label" style="width:60px;">地址:</td>        
         <
td style="width:150px">
             <
input name="addr" class="mini-textbox" /> </td>      
     </
tr>
     <
tr>
         <
td class="form-label">性别:</td>
         <
td >
             <
input name="gender" class="mini-radiobuttonlist" data="[{id: 1, text: '男'}, {id: 2, text: '女'}]"/> </td>
         <
td class="form-label">年龄:</td>        
         <
td > <input name="age" class="mini-spinner" /> </td>
     </
tr>
     <
tr>
         <
td class="form-label">备注:</td>        
         <
td colspan="3" >            
             <
input name="remarks" class="mini-textarea" style="width:343px;height:60px;"/></td>
     </
tr>
</
table>
                      
数据验证
监听处理控件的"validation"事件,自定义验证规则和错误描述信息:
<input id="username" name="username" onvalidation="onUserNameValidation" class="mini-textbox" required="true" />
function onUserNameValidation(e) {
    if (e.isValid) { 
        if (isEmail(e.value) == false) {
            e.errorText = "必须输入邮件地址";            
            e.isValid = false;
       }
    }
}
使用mini.Form组件对多个控件进行验证:   
var form = new mini.Form("#form1");
form.validate();           

加载表单

$.ajax({    
   
url: "../data/FormService.aspx?method=LoadData",  
   
type: "post",
   
success: function (text) {        
        var data = mini.decode(text); //反序列化成对象        
       
form.setData(data); //设置多个控件数据 
        }
});          

提交表单

//提交表单数据
var form = new mini.Form("#form1"); var data = form.getData(); //获取表单多个控件的数据 var json = mini.encode(data); //序列化成JSON $.ajax({ url: "../data/FormService.aspx?method=SaveData", type: "post", data: { submitData: json }, success: function (text) { alert("提交成功,返回结果:" + text); } });
 清除表单
   form.clear();
 
重置表单
  
form.reset();
                   

参考示例:       

posted @ 2012-09-10 21:02 nikofan 阅读(7962) | 评论 (3)编辑 收藏

CRUD包括:查询、编辑、新增、删除等数据操作。                  

效果图如下:

                                        
                                               

一:创建DataGrid

                      

首先,我们创建一个数据表格:

<div id="datagrid1" class="mini-datagrid" style="width:800px;height:280px;"
    url="../data/AjaxService.aspx?method=SearchEmployees" idField="id"
    allowResize="true" pageSize="20"
    allowCellEdit="true" allowCellSelect="true" multiSelect="true">
    <div property="columns">
        <div type="checkcolumn"></div>
        <div field="loginname" width="120" headerAlign="center" allowSort="true">员工帐号
            <input property="editor" class="mini-textbox" style="width:100%;"/>
        </div>
        <div field="gender" width="100" renderer="onGenderRenderer" align="center" headerAlign="center">性别
            <input property="editor" class="mini-combobox" style="width:100%;" data="Genders"/>
        </div>
        <div field="age" width="100" allowSort="true" >年龄
            <input property="editor" class="mini-spinner" minValue="0" maxValue="200" value="25" style="width:100%;"/>
        </div>
        <div field="birthday" width="100" allowSort="true" dateFormat="yyyy-MM-dd">出生日期
            <input property="editor" class="mini-datepicker" style="width:100%;"/>
        </div>
        <div field="remarks" width="120" headerAlign="center" allowSort="true">备注
            <input property="editor" class="mini-textarea" style="width:100%;" minHeight="80"/>
        </div>
        <div field="createtime" width="100" headerAlign="center" dateFormat="yyyy-MM-dd" allowSort="true">创建日期</div>
     </div>
</div>

二:查询记录

function search() {
    var key = document.getElementById("key").value;
    grid.load({ key: key });
}

使用load方法,可以传递更多、任意复杂的查询条件。后台通过Request["key"]方式获取和处理。

三:新增记录

function addRow() {
    var newRow = { name: "New Row" };
    grid.addRow(newRow, 0);
}

创建新记录时,可以初始化属性,比如newRow.age = 20;

四:删除记录

function removeRow() {
    var rows = grid.getSelecteds();
    if (rows.length > 0) {
        grid.removeRows(rows, true);
    }
}

选择多条记录后,可以一次性删除。

五:编辑记录

用户可以点击单元格,进行编辑操作。

编辑器是在定义列的时候指定的,例如:

<div field="loginname" width="120" headerAlign="center" allowSort="true">员工帐号
    <input property="editor" class="mini-textbox" style="width:100%;"/>
</div>

这里的property声明,此textbox作为列的编辑器对象。

五:提交保存

在进行多次增加、删除、修改操作后,一次性提交保存到后台。

function saveData() {
    var data = grid.getChanges();
    var json = mini.encode(data);
    grid.loading("保存中,请稍后......");
    $.ajax({
        url: "../data/AjaxService.aspx?method=SaveChangedEmployees",
        data: { data: json },
        type: "post",
        success: function (text) {
            grid.reload();
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert(jqXHR.responseText);
        }
    });
}

  DataGrid的getChanges方法,可以直接获取增加、删除、修改的记录数据。 数据状态位"_state"为"added"/"removed"/"modified"。

六:查询处理(服务端)

当grid调用load方法时,会将查询条件发送到服务端。服务端使用Request对象获得查询条件后,调用业务层方法,返回结果。代码如下:

public void SearchEmployees()
{
    //查询条件
    string key = Request["key"];
    //分页
    int pageIndex = Convert.ToInt32(Request["pageIndex"]);
    int pageSize = Convert.ToInt32(Request["pageSize"]);
    //字段排序
    String sortField = Request["sortField"];
    String sortOrder = Request["sortOrder"];
    //业务层:数据库操作
    Hashtable result = new TestDB().SearchEmployees(key, pageIndex, pageSize, sortField, sortOrder);
    //JSON
    String json = PluSoft.Utils.JSON.Encode(result);
    Response.Write(json);
}

经过查询,获得数据后,将数据序列化成JSON字符串,然后用Response返回。

六:保存处理(服务端)

获得数据后,遍历记录,根据记录的状态位"_state",分别进行增加、删除、修改操作。代码如下:

public void SaveChangedEmployees()
{
    String json = Request["data"];
    ArrayList rows = (ArrayList)PluSoft.Utils.JSON.Decode(json);
    foreach (Hashtable row in rows)
    {
        //根据记录状态,进行不同的增加、删除、修改操作
        String state = row["_state"] != null ? row["_state"].ToString() : "";
        if(state == "added")
        {
            row["createtime"] = DateTime.Now;
            new TestDB().InsertEmployee(row);
        }
        else if (state == "removed" || state == "deleted")
        {
            String id = row["id"].ToString();
            new TestDB().DeleteEmployee(id);
        }
        else if (state == "modified")
       {
            new TestDB().UpdateEmployee(row);
        } 
    } 
}                

参考示例:      

posted @ 2012-09-06 17:28 nikofan 阅读(12177) | 评论 (2)编辑 收藏

我们开始编写第一个MiniUI程序,代码如下:
<!DOCTYPE html />
<html>
<head>
    <title> Hello MiniUI!</title>
    <!--jQuery js-->
    <script src="../jquery.js" type="text/javascript"></script>
    <!--MiniUI-->
    <link href="../themes/default/miniui.css" rel="stylesheet" type="text/css" />
    <script src="../miniui.js" type="text/javascript"></script>
</head>
<body>
    <input id="helloBtn" class="mini-button" text="Hello" onclick="onHelloClick"/>
    <script type="text/javascript">
        function onHelloClick(e) {
            var button = e.sender;
            mini.alert("Hello MiniUI!");
        }
    </script>
</body>
</html>


 Note请注意相关javascript和css的路径是否正确。
 MiniUI是基于jQuery开发的javascript控件库,所以依赖jquery.js。jQuery版本1.4+即可。
 效果图如下:
   
    


    本例注意点如下:       
  • 控件声明:class="mini-button"      
  • 属性设置:text="Hello"       
  • 事件绑定:onclick="onHelloClick"      
  • 事件处理函数:onHelloClick的e是事件对象,e.sender是事件激发者,本例中是button。

    运行示例               

posted @ 2012-09-05 17:13 nikofan 阅读(2839) | 评论 (0)编辑 收藏

产品下载地址:http://www.miniui.com/download。                  

Note:请根据不同的服务端后台,选择下载不同后台版本的MiniUI。        
                       

下载后,解压缩。                    

会有如下文件结构:
                       

各目录文件解释如下:                           

  • dbsql:示例数据库sql文件。                           
  • demo:页面示例。                       
  • docs:api文档、开发指南。                           
  • scripts/miniui:MiniUI产品的javascript和css。                           
  • scripts/miniui/locale:语言资源文件。                           
  • scripts/miniui/themes:多套皮肤样式。                           
  • index.html:开发包导航页面。                           
  • miniui_commercial_license.doc:授权说明文档。                          
  • miniui_tryform.doc:试用申请表文档。                          
  • 安装部署.txt:安装部署说明文档。                        
                           

Note:开发者只需要引用jquery.js、miniui.js、miniui.css即可。                       

为更好演示DataGrid相关示例,以及提供可参考的数据交互代码,我们提供了示例数据库和一定的服务端代码。
                       

标准页面模板如下:

<!DOCTYPE html />
<html>
<head>
    <title>Hello MiniUI!</title>
    <!--jQuery js-->
    <script src="../jquery.js" type="text/javascript"></script>
    <!--MiniUI-->
    <link href="../themes/default/miniui.css" rel="stylesheet" type="text/css" />
    <script src="../miniui.js" type="text/javascript"></script>
</head>
<body>

</
body> </html>
posted @ 2012-09-04 12:34 nikofan 阅读(5476) | 评论 (0)编辑 收藏

仅列出标题
共8页: 上一页 1 2 3 4 5 6 7 8