天天看點

CYQ.Data+EasyUI開發:幾個相關的問題CheckBox、Tree、TreeGrid前言:1:相容IE8問題2:Form表單的CheckBox問題3:DataGrid裡的CheckBox問題:4:Tree 的綁定(MDataTable表格直接轉Json,不用多次查詢資料庫):5:TreeGrid的綁定:總結:

話說到新的公司已經呆了三個星期了,從上班的第二天開始就一直在寫項目文檔和給開發人員教育訓練,以至于我的qq簽名從"我不是來搞教育訓練的“到最後直接換成”我是來搞教育訓練的“。

雖然挂名開發經理,但下面目前就2人,手下的人雖然混過了2年工齡,但連程序,線程,泛型,面向對象等基礎都摸不着頭腦的小女孩,要指望她們寫代碼,隻好時不時的抽空給講基礎了。

話說下周的下周還會從boss的母校裡招來二十幾個學生過來實習,要我分解項目,寫出詳細的文檔,然後簡單教育訓練下學生,讓學生看着文檔就能幹活,明白了我是來搞教育訓練的。

好了,玩笑過後,下面講講目前用easyui遇到的幾點問題:

話說目前最新版本easyui 1.3.4不支援ie8,聽說是jq2.0不支援的原因,隻好降級使用到easyui 1.3.2,對應的jq1.8版本。

easyui有個form表單的自動指派:$("#id").form('load',json);

一開始用這樣的代碼:

CYQ.Data+EasyUI開發:幾個相關的問題CheckBox、Tree、TreeGrid前言:1:相容IE8問題2:Form表單的CheckBox問題3:DataGrid裡的CheckBox問題:4:Tree 的綁定(MDataTable表格直接轉Json,不用多次查詢資料庫):5:TreeGrid的綁定:總結:

using (maction action = new maction(tablenames.roles))

{

   if (action.fill(id))

   {

     return  action.data.tojson();

   }

}

CYQ.Data+EasyUI開發:幾個相關的問題CheckBox、Tree、TreeGrid前言:1:相容IE8問題2:Form表單的CheckBox問題3:DataGrid裡的CheckBox問題:4:Tree 的綁定(MDataTable表格直接轉Json,不用多次查詢資料庫):5:TreeGrid的綁定:總結:

結果發現傳回的json怎麼也給checkbox賦不了值,網上也沒對應的資料好尋,最後調一下js,看到普通的input指派,想到了on。

于是把傳回的true替換成on,[action.data.tojson().replace("true", "on")] 就可以了。

對于表格,需要将某些bool型的字段格式化成checkbox顯示,找到了半天,發現隻有用formatter格式化出來自己的樣式:

CYQ.Data+EasyUI開發:幾個相關的問題CheckBox、Tree、TreeGrid前言:1:相容IE8問題2:Form表單的CheckBox問題3:DataGrid裡的CheckBox問題:4:Tree 的綁定(MDataTable表格直接轉Json,不用多次查詢資料庫):5:TreeGrid的綁定:總結:

 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'  />";

        }

    }

CYQ.Data+EasyUI開發:幾個相關的問題CheckBox、Tree、TreeGrid前言:1:相容IE8問題2:Form表單的CheckBox問題3:DataGrid裡的CheckBox問題:4:Tree 的綁定(MDataTable表格直接轉Json,不用多次查詢資料庫):5:TreeGrid的綁定:總結:

然後界面指定:

 <th  data-options="field:'isenabled',formatter:formatcheckbox" > 是否啟用</th>

悲催的是,格式出來的控件,沒有對應的api可以擷取相關的值,目前的處理方法隻好通過增加點選事件,來處理後續狀态改變後值的送出。

研究了一下tree的綁定的json格式,然後寫了一個遞歸函數,直接把一個mdatatable轉成樹型的json。

CYQ.Data+EasyUI開發:幾個相關的問題CheckBox、Tree、TreeGrid前言:1:相容IE8問題2:Form表單的CheckBox問題3:DataGrid裡的CheckBox問題:4:Tree 的綁定(MDataTable表格直接轉Json,不用多次查詢資料庫):5:TreeGrid的綁定:總結:

 // 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;

CYQ.Data+EasyUI開發:幾個相關的問題CheckBox、Tree、TreeGrid前言:1:相容IE8問題2:Form表單的CheckBox問題3:DataGrid裡的CheckBox問題:4:Tree 的綁定(MDataTable表格直接轉Json,不用多次查詢資料庫):5:TreeGrid的綁定:總結:

對于傳進來的mdatatable,需要修改列名和對應的字段對上,然後保留一個通用的上級字段(parentid)就可以了,最終就出來這種格式了。

CYQ.Data+EasyUI開發:幾個相關的問題CheckBox、Tree、TreeGrid前言:1:相容IE8問題2:Form表單的CheckBox問題3:DataGrid裡的CheckBox問題:4:Tree 的綁定(MDataTable表格直接轉Json,不用多次查詢資料庫):5:TreeGrid的綁定:總結:

在功能權限這一塊,需要用到treegrid這種格式,最終發現決定上下級的json,是叫“_parentid”,還有該字段不能指定一個不存在的上級,不然不顯示。

對于這個,我也寫了一個簡單的轉換函數:

CYQ.Data+EasyUI開發:幾個相關的問題CheckBox、Tree、TreeGrid前言:1:相容IE8問題2:Form表單的CheckBox問題3:DataGrid裡的CheckBox問題:4:Tree 的綁定(MDataTable表格直接轉Json,不用多次查詢資料庫):5:TreeGrid的綁定:總結:

 /// <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);

CYQ.Data+EasyUI開發:幾個相關的問題CheckBox、Tree、TreeGrid前言:1:相容IE8問題2:Form表單的CheckBox問題3:DataGrid裡的CheckBox問題:4:Tree 的綁定(MDataTable表格直接轉Json,不用多次查詢資料庫):5:TreeGrid的綁定:總結:

樹形的效果就出來了:

CYQ.Data+EasyUI開發:幾個相關的問題CheckBox、Tree、TreeGrid前言:1:相容IE8問題2:Form表單的CheckBox問題3:DataGrid裡的CheckBox問題:4:Tree 的綁定(MDataTable表格直接轉Json,不用多次查詢資料庫):5:TreeGrid的綁定:總結:

目前項目剛開始,隻遇到并處理了這幾個基本的問題,後續若有問題待定。 

話說男女搭配,幹活不累,是有那麼點道理。

本文原創發表于部落格園,作者為路過秋天,原文連結:http://www.cnblogs.com/cyq1162/p/3389414.html