話說到新的公司已經呆了三個星期了,從上班的第二天開始就一直在寫項目文檔和給開發人員教育訓練,以至于我的qq簽名從"我不是來搞教育訓練的“到最後直接換成”我是來搞教育訓練的“。
雖然挂名開發經理,但下面目前就2人,手下的人雖然混過了2年工齡,但連程序,線程,泛型,面向對象等基礎都摸不着頭腦的小女孩,要指望她們寫代碼,隻好時不時的抽空給講基礎了。
話說下周的下周還會從boss的母校裡招來二十幾個學生過來實習,要我分解項目,寫出詳細的文檔,然後簡單教育訓練下學生,讓學生看着文檔就能幹活,明白了我是來搞教育訓練的。
好了,玩笑過後,下面講講目前用easyui遇到的幾點問題:
話說目前最新版本easyui 1.3.4不支援ie8,聽說是jq2.0不支援的原因,隻好降級使用到easyui 1.3.2,對應的jq1.8版本。
easyui有個form表單的自動指派:$("#id").form('load',json);
一開始用這樣的代碼:
using (maction action = new maction(tablenames.roles))
{
if (action.fill(id))
{
return action.data.tojson();
}
}
結果發現傳回的json怎麼也給checkbox賦不了值,網上也沒對應的資料好尋,最後調一下js,看到普通的input指派,想到了on。
于是把傳回的true替換成on,[action.data.tojson().replace("true", "on")] 就可以了。
對于表格,需要将某些bool型的字段格式化成checkbox顯示,找到了半天,發現隻有用formatter格式化出來自己的樣式:
var formatcheckbox = function (value, row, index) {
if (value == "1" || value == "true") {
return "<input type='checkbox' checked='checked' disabled='disabled' />";
} else {
return "<input type='checkbox' disabled='disabled' />";
}
}
然後界面指定:
<th data-options="field:'isenabled',formatter:formatcheckbox" > 是否啟用</th>
悲催的是,格式出來的控件,沒有對應的api可以擷取相關的值,目前的處理方法隻好通過增加點選事件,來處理後續狀态改變後值的送出。
研究了一下tree的綁定的json格式,然後寫了一個遞歸函數,直接把一個mdatatable轉成樹型的json。
// string id,string parentid,string text,string state,string url
/// <summary>
/// 将表格轉成tree對應的json,對應的字段為(id,parentiid,text,state,url)
/// </summary>
/// <param name="dt"></param>
/// <param name="parentid">為0或為空</param>
/// <returns></returns>
public static string totreejson(mdatatable dt, string parentid)
{
list<mdatarow> firstdt = dt.findall("parentid='" + parentid + "'");//第一級菜單
if (firstdt.count > 0)
{
mdatarow row = null;
jsonhelper json = new jsonhelper();
string id, text, url;
for (int i = 0; i < firstdt.count; i++)
{
row = firstdt[i];
id = row.get<string>("id");
text = row.get<string>("text");
json.add("id", id);
json.add("text", text);
url = row.get<string>("url");
if (!string.isnullorempty(url))
{
json.add("attributes", "{\"url\":\"" + url + "\"}", true);
}
string children = totreejson(dt, id);
if (!string.isnullorempty(children))
if (row.get<bool>("state"))
{
json.add("state", "closed");
}
json.add("children", children, true);
json.addbr();
}
return json.tostring(true);
}
return string.empty;
}
對于傳進來的mdatatable,需要修改列名和對應的字段對上,然後保留一個通用的上級字段(parentid)就可以了,最終就出來這種格式了。
在功能權限這一塊,需要用到treegrid這種格式,最終發現決定上下級的json,是叫“_parentid”,還有該字段不能指定一個不存在的上級,不然不顯示。
對于這個,我也寫了一個簡單的轉換函數:
/// <summary>
/// 将表格轉成greegrid對應的json.
public static string totreegridjson(mdatatable dt)
int index = dt.columns.getindex("parentid");
if (index > -1)
dt.columns[index].columnname = "_parentid";
int value = 0;
foreach (mdatarow row in dt.rows)
value = row.get<int>(index);
if (value == 0 || row.get<int>("id") == value)//greegrid不存在的父id不能出現
row[index].value = dbnull.value;
return dt.tojson(true, false);
樹形的效果就出來了:
目前項目剛開始,隻遇到并處理了這幾個基本的問題,後續若有問題待定。
話說男女搭配,幹活不累,是有那麼點道理。
本文原創發表于部落格園,作者為路過秋天,原文連結:http://www.cnblogs.com/cyq1162/p/3389414.html