jqGrid 實用技巧 (十七) 動態的 edittype : select

讀 者 kate 留 言 詢 問 關 於 動 態 select 的 寫 法 ,現 詳 述 如 下 :

...
colModel :[
....
{name:'name',index:'name',editable:true,edittype:'select',editoptions:{value:"1:Yes;2:No"}},
....
],
...

根 據 documentation,edittype: select 有 三 種 寫 法 ,都 是 寫 在 editoptions 裡 面 ,分 別 是 :
1. value 是 一 個 string;
2. value 是 一 個 object;
3. 使 用 dataUrl 參 數 。

string 的 寫 法 如 下 ,要 注 意 的 是 ,最 尾 是 不 可 以 有 分 號 (;) 的 。

...
..., editoptions: { value: "FE:FedEx; IN:InTime; TN:TNT" }...
...

我 們 當 然 亦 可 以 把 這 個 string 變 成 一 個 變 數 。

...
var selectString = "FE:FedEx; IN:InTime; TN:TNT";
...
...
..., editoptions: { value: selectString }...
...

Object 的 寫 法 也 差 不 多 。

...
..., editoptions: { value: {1:'One',2:'Two'} }...
...

Object 當 然 也 一 樣 可 以 寫 成 變 數 。

...
var selectObject = {1:'One',2:'Two'};
...
...
..., editoptions: { value: selectObject }...
...

dataUrl 就 比 較 麻 煩 ,因 為 使 用 datUrl 要 傳 回 的 ,必 須 是 一 個 完 整 的 select ( html element ),例 如 :

<select> 
<option value='1'>One</option> 
<option value='2'>Two</option> 
</select>

因 為 dataUrl 要 我 在 後 台 完 成 一 整 個 select element,我 個 人 覺 得 比 較 笨 。所 以 我 自 己 比 較 喜 歡 在 後 台 直 接 製 成 一 個 string 傳 回 前 台 使 用 ( 愚 見 覺 得 sting 會 比 json object 短 一 點 點 )。

如 果 資 料 是 比 較 靜 態 的 ,例 如 全 台 灣 的 縣 市 資 料 ,我 會 在 jqGrid 之 前 ajax 一 次 資 料 ,寫 入 變 數 ,再 在 jqGrid 方 法 時 使 用 這 個 變 數 。如 果 是 這 種 情 況 ,我 們 最 好 在 一 開 始 的 ajax 加 入 async: false 參 數 ,因 為 如 果 ajax 在 jqGrid 開 始 時 還 未 做 完 ,selectString 是 empty 的 。

...
...
var selectString = "";
...
$.ajax({
   async: false,
   url: "load/load_select.php"
}).done(function( data ) {
   selectString = data;
});
...
...
jQuery("#jqGrid").jqGrid({
...
{name:'name', edittype:'select', editoptions: {value: selectString}},
...
});
...

而 如 果 資 料 是 非 常 動 態 的 ,要 在 jqGrid 生 成 後 ,再 去 改 變 select 的 options,我 們 可 以 用 jqGrid 的 setColProp 方 法 。

...
jQuery("#jqGrid").jqGrid({
...
{name:'name', edittype:'select', editoptions: {}},
...
});
...
...
function loadSelect() {
$.ajax({
   url: "load/load_select.php"
}).done(function( data ) {
   $('#jqGrid').setColProp('name',{editoptions:{value:data}}).trigger("reloadGrid");
   $('#jqGrid').setColProp('name',{searchoptions:{sopt:['eq'],value:data}}).trigger("reloadGrid");
});
}
...

你 可 以 在 任 何 有 需 要 的 時 候 執 行 loadSelect function 去 更 新 jqGrid 的 select options。例 如 可 以 在 loadComplete 又 或 者 gridComplete 時 執 行 一 次 。又 或 者 ,在 每 次 你 更 新 完 name 資 料 時 執 行 一 次 。

要 注 意 ,因 為 我 的 php 傳 回 的 就 是 一 個 string,不 用 stringigy 等 處 理 就 可 以 直 接 使 用 ,很 方 便 吧 ?

你 可 以 見 到 ,select 的 寫 法 有 很 多 ,每 一 種 寫 法 又 可 以 有 不 同 的 變 化 ,所 以 是 有 許 多 不 同 的 寫 法 可 以 達 成 同 一 目 的 的 ,以 上 只 是 我 自 己 偏 好 的 寫 法 ,而 並 不 是 只 有 這 一 種 寫 法 啊 。

 

ctleung張 先 生 ,男 性 ,肖 龍 。
職 業 :I.T. Consultant
簡 介 :不 好 好 讀 書 ;七 尺 差 五 寸 ,手 長 過 膝 ,雙 耳 垂 肩 ;性 寬 和 ,寡 言 語 ,喜 怒 不 形 於 色 。據 說 少 時 曾 斬 白 蛇 於 鳳 凰 山 下 ……
Posted in jqGrid | Tagged , , | 5 Comments

GRBL CNC 雕刻機 – DIY 燈籠

CNC 雕 刻 機 有 什 麼 用 呢 ?可 以 做 點 什 麼 呢 ?其 實 ,CNC 雕 刻 機 什 麼 都 可 以 做 。很 快 就 中 秋 了 ,這 次 我 給 小 朋 友 們 做 幾 個 燈 籠 應 應 節 吧 。

首 先 ,要 決 定 燈 籠 外 框 的 物 料 。我 用 1cm x 1cm x 20cm 的 小 木 方 ,作 為 燈 籠 的 4 個 支 柱 。然 後 ,用 竹 籤 來 做 橫 樑 。小 木 方 可 以 在 模 型 鋪 買 ,我 家 樓 下 一 根 36 寸 長 ,3/8 寸 粗 的 飛 機 木 要 14 蚊 一 條 ,在 淘 寶 買 當 然 就 平 靚 正 得 多 。竹 籤 我 就 在 超 市 買 ,十 蚊 左 右 一 包 ,有 百 多 根 的 了 。

小 木 方

小 木 方

竹 籤 的 直 徑 大 約 是 2.5mm,所 以 我 要 先 在 每 根 支 柱 相 鄰 的 兩 個 面 上 各 鑽 2 個 小 孔 。為 求 精 確 定 位 ,我 們 當 然 是 CNC 機 來 鑽 孔 。

lantern002

竹 籤

而 且 用 CNC 雕 刻 機 來 鑽 孔 有 一 個 好 處 ,就 是 你 不 必 為 每 次 鑽 孔 的 大 小 而 準 備 不 同 直 徑 的 鑽 頭 。你 只 需 要 一 根 比 孔 徑 小 的 柱 刀 或 銑 刀 ,就 可 以 鑽 出 比 刀 刃 大 的 孔 了 。例 如 這 一 次 ,我 手 上 沒 有 2.5mm 的 鑽 頭 ,所 以 我 就 用 了 一 根 1mm 的 柱 刀 ,來 鑽 2.5mm 的 小 孔 。

木 方 和 竹 籤

木 方 和 竹 籤

小 孔 的 深 度 我 就 設 定 為 3mm,小 孔 離 支 柱 的 頂 端 15mm。這 些 參 數 其 實 大 家 都 可 以 自 由 設 定 。為 求 統 一 和 省 時 ,我 每 次 會 鑽 4 根 支 柱 。

每 次 鑽  4 個 小 木 方

每 次 鑽 4 個 小 木 方

然 後 ,我 要 為 每 一 根 支 柱 的 頂 端 ,鑽 一 個 掛 繩 用 的 小 孔 。這 個 掛 繩 孔 我 採 用 了 對 方 線 的 方 向 ,所 以 我 用 廢 料 臨 時 雕 刻 了 一 個 45 度 的 輔 助 工 具 。這 個 小 孔 我 用 了 2mm 的 銑 刀 ,一 鑽 到 底 ,深 度 是 15mm。

鑽  45 度 的 小 孔

鑽 45 度 的 小 孔

到 現 時 為 止 都 太 簡 單 了 ,簡 直 是 侮 辱 了 雕 刻 機 。呵 呵 ,是 的 ,但 接 下 來 就 有 點 不 一 樣 了 。接 下 來 我 們 把 CNC 雕 刻 機 換 上 激 光 頭 ,用 激 光 來 做 幾 張 剪 紙 。

激 光 剪 紙

激 光 剪 紙

用 激 光 來 做 剪 紙 ,秘 訣 就 是 快 狠 準 。而 且 ,用 激 光 比 用 剪 刀 ,門 外 漢 如 我 也 可 以 輕 鬆 雕 刻 出 比 較 複 雜 的 圖 案 。我 自 己 用 最 入 門 級 的 500mW 激 光 頭 ,行 400mm/min ,切 紙 就 已 經 很 足 夠 了 。

激 光 剪 紙

激 光 剪 紙

要 做 激 光 雕 刻 其 實 比 用 CNC 雕 刻 機 是 簡 單 許 多 的 ,因 為 現 在 已 經 有 十 分 多 可 以 import jpg 圖 檔 就 直 接 雕 刻 的 軟 體 ,例 如  LaserGRBL。使 用 這 類 軟 體 的 話 ,連 刀 路 檔 都 不 用 做 ,軟 體 直 接 控 制 GRBL 控 制 板 來 雕 刻 。

激 光 剪 紙

激 光 剪 紙

完 成 之 後 ,先 把 剪 紙 貼 到 薄 薄 的 宣 紙 上 ,再 把 宣 紙 固 定 到 竹 籤 之 上 ,就 這 樣 ,DIY 燈 籠 就 完 成 了 。

完 成 的 燈 籠

完 成 的 燈 籠

我 們 可 以 去 買 一 根 電 燈 籠 的 手 提 桿 ,或 者 環 保 一 點 ,用 去 年 舊 的 電 燈 籠 的 手 提 桿 。綁 上 掛 繩 ,然 後 就 可 以 帶 出 去 玩 了 。

如 果 唔 帶 出 街 ,在 裡 面 放 個 LED 蠟 燭 ,作 為 擺 設 也 不 錯 。

ctleung張 先 生 ,男 性 ,肖 龍 。
職 業 :I.T. Consultant
簡 介 :不 好 好 讀 書 ;七 尺 差 五 寸 ,手 長 過 膝 ,雙 耳 垂 肩 ;性 寬 和 ,寡 言 語 ,喜 怒 不 形 於 色 。據 說 少 時 曾 斬 白 蛇 於 鳳 凰 山 下 ……
Posted in Computer & Network | Tagged , , , , , , , | Leave a comment