国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

easyui datagrid中datetime字段的顯示和增刪改查問題

2019-11-17 01:55:07
字體:
供稿:網(wǎng)友

easyui datagrid中datetime字段的顯示和增刪改查問題

datagrid中datetime字段的異常顯示:

使用過easyui datagrid的應(yīng)該都知道,如果數(shù)據(jù)庫中的字段是datetime類型,綁定在datagrid顯式的時候會不正常顯示,一般需要借助于formatter來格式化時間格式

                  {                    title: '活動開始時間', field: 'BeginTime', width: 300, editor: {                        type: 'datetimebox', options: { required: true },                        formatter: function (v) {                            return Common.DateTimeFormatter(v);                        }                    }                }

Common.DateTimeFormatter的具體實現(xiàn)如下:

var Common = {    //EasyUI用DataGrid用日期格式化    TimeFormatter: function (value, rec, index) {        if (value == undefined) {            return "";        }        /*json格式時間轉(zhuǎn)js時間格式*/        value = value.substr(1, value.length - 2);        var obj = eval('(' + "{Date: new " + value + "}" + ')');        var dateValue = obj["Date"];        if (dateValue.getFullYear() < 1900) {            return "";        }        var val = dateValue.pattern("yyyy-MM-dd HH:mm");        return val;    },    DateTimeFormatter: function (value, rec, index) {        if (value == null || value == '') {            return '';        }        var dt;        if (value instanceof Date) {            dt = value;        }        else {            dt = new Date(value);            if (isNaN(dt)) {                value = value.replace(///Date/((-?/d+)/)///, '$1'); //標(biāo)紅的這段是關(guān)鍵代碼,將那個長字符串的日期值轉(zhuǎn)換成正常的JS日期格式                dt = new Date();                dt.setTime(value);            }        }        return dt.pattern("yyyy-MM-dd HH:mm");    },    //EasyUI用DataGrid用日期格式化    DateFormatter: function (value, rec, index) {        if (value == undefined) {            return "";        }        /*json格式時間轉(zhuǎn)js時間格式*/        value = value.substr(1, value.length - 2);        var obj = eval('(' + "{Date: new " + value + "}" + ')');        var dateValue = obj["Date"];        if (dateValue.getFullYear() < 1900) {            return "";        }        return dateValue.pattern("yyyy-MM-dd");    }};
View Code
Date.PRototype.pattern = function (fmt) {    var o = {        "M+": this.getMonth() + 1, //月份                "d+": this.getDate(), //日                "h+": this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //小時                "H+": this.getHours(), //小時                "m+": this.getMinutes(), //分                "s+": this.getSeconds(), //秒                "q+": Math.floor((this.getMonth() + 3) / 3), //季度                "S": this.getMilliseconds() //毫秒            };    var week = {        "0": "/u65e5",        "1": "/u4e00",        "2": "/u4e8c",        "3": "/u4e09",        "4": "/u56db",        "5": "/u4e94",        "6": "/u516d"    };    if (/(y+)/.test(fmt)) {        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));    }    if (/(E+)/.test(fmt)) {        fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "/u661f/u671f" : "/u5468") : "") + week[this.getDay() + ""]);    }    for (var k in o) {        if (new RegExp("(" + k + ")").test(fmt)) {            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));        }    }    return fmt;}
View Code

看著這么多js還是很繁瑣的,我這里采用一個小技巧,就是把數(shù)據(jù)庫里的datetime格式的字段類型轉(zhuǎn)化為字符串格式 值不變,但是免去了前端格式化的過程

 { title: '活動開始時間', field: 'BeginTimeStr', width: 300, editor: { type: 'datetimebox', options: { required: true } } }

具體 datetime類型的轉(zhuǎn)化可以在數(shù)據(jù)庫層面或者C#代碼層面實現(xiàn);我這里是在數(shù)據(jù)庫層面進(jìn)行的轉(zhuǎn)化,然后直接指定的字符串類型的BeginTimeStr作為綁定字段

SELECT ID,ActivityItemID,Created,CONVERT(varchar, EndTime , 20) EndTimeStr,CONVERT(varchar, BeginTime , 20) BeginTimeStrFROM dbo.ActivityItemIDInfo

datagrid RowEdit:

第一步:指定editor

 columns: [[                {                    title: '鏈接ID', field: 'ActivityItemID', width: 200, editor: {                        type: 'numberbox', options: { required: true }                    }                },                { title: '活動開始時間', field: 'BeginTimeStr', width: 300, editor: { type: 'datetimebox', options: { required: true } } },                {                    title: '活動結(jié)束時間', field: 'EndTimeStr', width: 300, editor: { type: 'datetimebox', options: { required: true } }                }            ]]

第二步定義相應(yīng)的操作方法:

var editIndex = undefined;function endEditing() {    if (editIndex == undefined) { return true }    if ($('#ActivityItemIDInfolist').datagrid('validateRow', editIndex)) {        var ed = $('#ActivityItemIDInfolist').datagrid('getEditor', { index: editIndex, Field: 'ActivityItemID' });        $('#ActivityItemIDInfolist').datagrid('endEdit', editIndex);        editIndex = undefined;        return true;    } else {        return false;    }}function onClickRow(index) {    if (editIndex != index) {        if (endEditing()) {            $('#ActivityItemIDInfolist').datagrid('selectRow', index).datagrid('beginEdit', index);            editIndex = index;        } else {            $('#ActivityItemIDInfolist').datagrid('selectRow', editIndex);        }    }}function append() {    if (endEditing()) {        $('#ActivityItemIDInfolist').datagrid('appendRow', { ActivityItemID: '0' });        editIndex = $('#ActivityItemIDInfolist').datagrid('getRows').length - 1;        $('#ActivityItemIDInfolist').datagrid('selectRow', editIndex).datagrid('beginEdit', editIndex);    }}function removeit() {    if (editIndex == undefined) { return; }    $('#ActivityItemIDInfolist').datagrid('cancelEdit', editIndex).datagrid('deleteRow', editIndex);    editIndex = undefined;}function accept() {    if (endEditing()) {        $('#ActivityItemIDInfolist').datagrid('acceptChanges');    }}function reject() {    $('#ActivityItemIDInfolist').datagrid('rejectChanges');    editIndex = undefined;}function getChanges() {    var rows = $('#ActivityItemIDInfolist').datagrid('getChanges');    alert(rows.length + ' rows are changed!');}
View Code

第三步: 指定編輯行索引的時機,這里把時機和行單擊事件關(guān)聯(lián)

第四步:檢測datagrid的變化,并把變化通過Ajax的方式提交到后臺處理

function SaveDataToServer() {    endEditing();    var rows = $('#ActivityItemIDInfolist').datagrid('getChanges');    if (rows.length > 0) {        var inserted = $('#ActivityItemIDInfolist').datagrid('getChanges', "inserted");        var deleted = $('#ActivityItemIDInfolist').datagrid('getChanges', "deleted");        var updated = $('#ActivityItemIDInfolist')
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 怀远县| 砚山县| 德惠市| 商城县| 青冈县| 广宗县| 突泉县| 龙门县| 康平县| 孝昌县| 错那县| 太康县| 靖安县| 务川| 胶州市| 科技| 京山县| 石景山区| 江都市| 山阴县| 浙江省| 定远县| 江源县| 江北区| 临安市| 青州市| 肇州县| 海兴县| 泸水县| 资兴市| 揭阳市| 茂名市| 枣阳市| 赫章县| 屏东市| 韩城市| 洛阳市| 孝昌县| 溆浦县| 江安县| 慈利县|