MNAH
MNAH

Reputation: 71

Why my data is not updating?

I am trying to update ClientInfo table. But it is not updating and shows that Undefined. Those code below i have used in my controller for updating my database table data. Where is my problem i cannot find out? experts please help me..

 [HttpPost]
        public JsonResult Update(ClientInfo clnt, int id)
        {
            if (ModelState.IsValid)
            {
                ClientInfo c = db.Query<ClientInfo>("Select * from ClientInfo Where CId=@0", id).First<ClientInfo>();
                c.CName = clnt.CName;
                c.CCName = clnt.CCName;
                c.Address = clnt.Address;
                c.PhoneNo = clnt.PhoneNo;
                c.Fax = clnt.Fax;
                c.Email = clnt.Email;
                c.Country = clnt.Country;
                c.PostalCode = clnt.PostalCode;
                c.Update();
                return Json(c, JsonRequestBehavior.AllowGet);
            }
            else
                return Json(new { msg = "Fail to Update Client Info." + id });
        }  

And Search Controller For searching Data

public JsonResult Search2(string id=null)
        {
            if (id != null)
            {
                var sresult = db.Query<ClientInfo>("Where CId=" + id).ToList<ClientInfo>();
                return Json(sresult, JsonRequestBehavior.AllowGet);
            }
            else
                return null;
        }

And my ajax call from views For searching data by cid value..

@section scripts{
    @Scripts.Render("~/bundles/jqueryui")
    @Scripts.Render("~/bundles/jqueryval")
    @Styles.Render("~/Content/themes/base/css")

<script type="text/javascript">
    $(document).ready(function () {
        $('#CId').blur(function () {
            var v = $('#CId').val();
            var url = "/Clients/Search2/" + v;
          //  alert("Test : " + url);

            $("#CName").val("");
            $("#CCName").val("");
            $("#PhoneNo").val("");
            $("#Fax").val("");
            $("#Email").val("");
            $("#Address").val("");
            $("#PostalCode").val("");
            $("#Country").val("");

            $.getJSON(url, null, function (data, status) {
                $.each(data, function (index, C) {
                    $("#CName").val(C.CName);
                    $("#CCName").val(C.CCName);
                    $("#PhoneNo").val(C.PhoneNo);
                    $("#Fax").val(C.Fax);
                    $("#Email").val(C.Email);
                    $("#Address").val(C.Address);
                    $("#PostalCode").val(C.PostalCode);
                    $("#Country").val(C.Country);
                });
            });
        });

For database update i have used this function ...

        $('#btnUpdate').click(function () {
            var CId = $("#CId").val();
            var CName = $("#CName").val();
            var CCName = $("#CCName").val();
            var PhoneNo = $("#PhoneNo").val();
            var Fax = $("#Fax").val();
            var Email = $("#Email").val();
            var Address = $("#Address").val();
            var PostalCode = $("#PostalCode").val();
            var Country = $("#Country").val();

            var client1 = {
                "CId": CId,
                "CName": CName,
                "CCName": CCName,
                "PhoneNo": PhoneNo,
                "Fax": Fax,
                "Email": Email,
                "Address": Address,
                "PostalCode": PostalCode,
                "Country": Country
            };

            var lk = "/Clients/Update/" + CId;

            //alert("Test : Update " + lk + "\n" + client1.Country);
            client = JSON.stringify(client1);

            $.ajax({
                cashe: false,
                async: false,
                url: lk,
                type: 'POST',
                data: client,
                dataType: "json",
                success: function (data) {
                    alert(data.msg);
                },
                error: function (data) {
                    alert(data.msg);
                }
            });

        });
    });

</script>
}

Upvotes: 0

Views: 162

Answers (2)

Tseng
Tseng

Reputation: 64288

If you mean Undefined in your alert message box, it's simple:

$.ajax({
    cashe: false,
    async: false,
    url: lk,
    type: 'POST',
    data: client,
    dataType: "json",
    success: function (data) {
        alert(data.msg);
    },
    error: function (data) {
        alert(data.msg);
    }
});

Your ajax code displays the content of data.msg. But when your model is valid, it retrieves the model from the database, updates it and returns the new model. There is no msg json property if it succeeds, hence data.msg is undefined.

If you want it to return a success message, you need to change

return Json(c, JsonRequestBehavior.AllowGet);

into

return Json(new { msg = "Update Successful.",  record = c }, JsonRequestBehavior.AllowGet);

then you will have a message in data.msg and your newly updated record in data.record.

Upvotes: 1

Lev K.
Lev K.

Reputation: 402

DBContext have a save method you must run this.

Did you run Save(); method ?

Upvotes: 0

Related Questions