How to format date returned from .NET ajax call.
How to format date returned from .NET ajax call.
 drettberg            
            
                Posts: 6Questions: 3Answers: 1
drettberg            
            
                Posts: 6Questions: 3Answers: 1            
            Here's my client-side code:
                var url = "@Url.Action("GetDisplayMessagesDataTables", "Admin", new {locId = "__locId__"})";
                var locId = $("#displayselect option:selected")[0].value;
                url = url.replace("__locId__", locId);
                editor = new $.fn.dataTable.Editor( {
                    ajax: { url,
                        data: function (d) {
                            if (d.action == "create")
                                d.data[0].DisplayLocation_ID = $("#displayselect option:selected")[0].value;
                        }
                    },
                    table: "#messagegrid",
                    fields: [{
                        label: "Message Index:",
                        name: "MessageIndex"
                    }, {
                        label: "Message Text:",
                        name: "MessageText",
                    }, {
                        label: "Expiration:",
                        name: "Expiration",
                        type: "datetime",
                        def: "",
                        format: "MM-DD-YYYY hh:mm A",
                        fieldInfo: "mm-dd-yyyy hh:mm am/pm"
                    }],
                    formOptions: {
                        inline: {
                            onBlur: 'submit'
                        }
                    }
                } );
                $('#messagegrid').DataTable({
                    dom: "Bfrtip",
                    destroy: true,
                    ajax: url,
                    columns: [
                        { data: "MessageIndex" },
                        { data: "MessageText" },
                        { data: "Expiration" }
                    ],
                    select: true,
                    buttons: [
                        { extend: "create", editor: editor },
                        { extend: "edit", editor: editor },
                        { extend: "remove", editor: editor }
                    ]
                })
            });
Server-side code:
        public JsonResult GetDisplayMessagesDataTables(int locId) {
            var formData = HttpContext.Request.Form;
            using (var db = new Database("sqlserver", ConfigurationManager.ConnectionStrings["MjnDisplaysConnectionString"].ConnectionString)) {
                Field f = new Field("DisplayMessage_ID").Set(false);
                Field ex = new Field("Expiration")
                    .SetFormatter((obj, data) => {
                        if (obj != null && (string)obj != "") {
                            DateTime dt;
                            if (DateTime.TryParse(obj.ToString(), out dt))
                                return dt;
                            else
                                return null;
                        } else
                            return null;
                    })
                    .GetFormatter((obj, data) => {
                        string ret = null;
                        if (obj != null) {
                            DateTime dt = (DateTime)obj;
                            ret = dt.ToString("MM-dd-yyyy hh:mm tt");
                        }
                        return ret;
                    });
                var response = new Editor(db, "DisplayMessage", "DisplayMessage_ID")
                    .Model<DisplayMessageData>()
                    .Where("DisplayLocation_ID", locId)
                    .Field(f)
                    .Field(ex)
                    .Field(new Field("MessageText").Xss(false))
                    .Process(formData)
                    .Data();
                return Json(response, JsonRequestBehavior.AllowGet);
            }
        }
Expiration is my datetime database field and it always displays as a JSON date (i.e. /Date(1434253400000) in the data table. I've looked through the Date/Time examples but don't see where anything special is done as far as formatting on the client side.
What am I missing?
Thanks,
Dave
This question has an accepted answers - jump to answer
This discussion has been closed.
            
Answers
Found it. Had the field as a DateTime in the model class. Changed that to string and all is well.
Thanks,
Dave
Thanks for posting back - great to hear you've got it working now.
The problem with the
DateTimein the model is that it can't be directly represented in JSON.Allan