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 閱讀(1827) | 評論 (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 閱讀(2376) | 評論 (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 閱讀(2100) | 評論 (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 閱讀(3357) | 評論 (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 閱讀(8027) | 評論 (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 閱讀(12238) | 評論 (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 閱讀(2855) | 評論 (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 閱讀(5494) | 評論 (0)編輯 收藏

          僅列出標題
          共8頁: 上一頁 1 2 3 4 5 6 7 8 
          主站蜘蛛池模板: 东乡族自治县| 阳曲县| 汉寿县| 怀远县| 塔城市| 洞头县| 错那县| 庆城县| 黑水县| 临泽县| 同仁县| 木里| 江华| 施甸县| 高台县| 鱼台县| 安庆市| 恭城| 嘉禾县| 花莲县| 西安市| 孝感市| 南陵县| 墨脱县| 姜堰市| 宾阳县| 曲周县| 安溪县| 广昌县| 马关县| 安龙县| 博客| 双辽市| 德化县| 霍城县| 武冈市| 德州市| 灵山县| 普安县| 甘孜县| 祁门县|