Monday 19 November 2012

Step 3

[[[[[[[Step 3]]]]]]]]]
ProductController.cs
========================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MVCGridSample.Models;
using MVCGridSample.Models.DB;
using System.Text;

namespace MVCGridSample.Controllers
{
    public class ProductController : Controller
    {
        public string[] strAllArr, strFinalArr;
        string sortDirection;
        long lgProductId = 0;
        string strPageSizecntl = "50";
        public mdlProduct MdlProduct = null;

        #region Default

        public ActionResult ProductList()
        {
            try
            {
                TempData["sortDirection"] = "ASC";
                return View();
            }
            catch (Exception ex)
            {
                return View();
            }
        }

        #endregion

        #region Defined

        public JsonResult LoadProduct(string strSize, string strFilterText)
        {
            try
            {
                TempData["CurrentPageIndex"] = 1;
                return Json(BindProductGrd(strSize, strFilterText));
            }
            catch (Exception ex)
            {
                return Json("");
            }
        }

        public JsonResult MangeSortDirection(string strSize, string strFilterText)
        {
            try
            {
                if (TempData["sortDirection"] != null && TempData["sortDirection"].ToString() == "ASC")
                {
                    TempData["sortDirection"] = "DESC";
                }
                else
                {
                    TempData["sortDirection"] = "ASC";
                }
                return Json(BindProductGrd(strSize, strFilterText));
            }
            catch (Exception ex)
            {
                return Json("");
            }
        }

        public JsonResult DeleteProduct()
        {
            try
            {              
                if (TempData["chkDelete"] != null)
                {
                    strAllArr = TempData["chkDelete"].ToString().Split('|');
                    if (MdlProduct == null)
                    {
                        MdlProduct = new mdlProduct();
                    }
                    for (int i = 0; i <= strAllArr.Length - 1; i++)
                    {
                        strFinalArr = strAllArr[i].ToString().Split(';');
                        lgProductId = Convert.ToInt64(strFinalArr[0].ToString());
                        MdlProduct.DeleteProduct(lgProductId, 1);
                    }
                    TempData["chkDelete"] = null;
                }
                return Json(BindProductGrd(strPageSizecntl, ""));
            }
            catch (Exception ex)
            {
                return Json("");
            }
        }

        public JsonResult ChangePageIndexProduct(string strAction, string strSize, string strFilterText)
        {
            try
            {
                if (strAction == "Next")
                {
                    if (TempData["CurrentPageIndex"] != null && TempData["TotalPages"] != null)
                    {
                        if (Convert.ToInt16(TempData["CurrentPageIndex"].ToString()) != Convert.ToInt16(TempData["TotalPages"].ToString()))
                        {
                            int i = Convert.ToInt16(TempData["CurrentPageIndex"]);
                            TempData["CurrentPageIndex"] = i + 1;
                            return Json(BindProductGrd(strSize, strFilterText));
                        }
                    }
                }
                else
                {
                    if (Convert.ToInt16(TempData["CurrentPageIndex"].ToString()) != 1)
                    {
                        int i = Convert.ToInt16(TempData["CurrentPageIndex"]);
                        TempData["CurrentPageIndex"] = i - 1;
                        return Json(BindProductGrd(strSize, strFilterText));
                    }
                }
                return Json("");
            }
            catch (Exception ex)
            {
                return Json("");
            }
        }

        public string BindProductGrd(string strSize, string strFilterText)
        {
            try
            {
                if (Session["VIEWRights"] != null && Session["VIEWRights"].ToString() == "0")
                {
                    return "";
                }
                int PageIndex = 1;
                int pageno = 1;
                int inTotalRows = 0;
                if (TempData["CurrentPageIndex"] != null)
                {
                    PageIndex = Convert.ToInt16(TempData["CurrentPageIndex"].ToString());
                    TempData["CurrentPageIndex"] = PageIndex.ToString();
                }

                List<Product_lstResult> ObjGetAllProduct = new List<Product_lstResult>();
                if (MdlProduct == null)
                {
                    MdlProduct = new mdlProduct();
                }
                if (TempData["sortDirection"] != null)
                {
                    sortDirection = TempData["sortDirection"].ToString();
                }
                else
                {
                    sortDirection = "ASC";
                }
                ObjGetAllProduct = MdlProduct.GetAllProduct(Convert.ToInt16(strSize), PageIndex, strFilterText, sortDirection);
                TempData["sortDirection"] = sortDirection;
                StringBuilder strProductGrd = new StringBuilder("");
                strProductGrd.Append("<table><thead><tr><th><input name=\"selectall\" type=\"checkbox\" onclick=\"return SelectAllCheckbox()\" title=\"Select all\" /></th><th style=\"cursor: pointer;\" onclick=\"return LoadProductGrd()\">Product Name</th><th>Description</th><th>Active</th></tr></thead><tbody>");
                if (ObjGetAllProduct.Count > 0)
                {
                    pageno = Convert.ToInt16(ObjGetAllProduct.ElementAt(0).RowNum.ToString());
                    inTotalRows = Convert.ToInt16(ObjGetAllProduct.ElementAt(0).TotalRows.ToString());
                    TempData["TotalPages"] = ObjGetAllProduct.ElementAt(0).PageCount.ToString();
                    TempData["TotalRows"] = inTotalRows;
                    string strUName, strDesc, strIsActive;
                    long lgUID;
                    for (int i = 0; i <= ObjGetAllProduct.Count - 1; i++)
                    {
                        if (ObjGetAllProduct.ElementAt(i).Id != null)
                        {
                            lgUID = Convert.ToInt64(ObjGetAllProduct.ElementAt(i).Id);
                        }
                        else
                        {
                            lgUID = 0;
                        }
                        if (ObjGetAllProduct.ElementAt(i).ProductName != null)
                        {
                            strUName = ObjGetAllProduct.ElementAt(i).ProductName.ToString();
                        }
                        else
                        {
                            strUName = "";
                        }
                        if (ObjGetAllProduct.ElementAt(i).Description != null)
                        {
                            strDesc = ObjGetAllProduct.ElementAt(i).Description.ToString();
                        }
                        else
                        {
                            strDesc = "";
                        }

                        if (ObjGetAllProduct.ElementAt(i).IsActive != null)
                        {
                            strIsActive = ObjGetAllProduct.ElementAt(i).IsActive.ToString();
                        }
                        else
                        {
                            strIsActive = "";
                        }
                        if (i == 0)
                        {
                            strProductGrd.Append("<tr ><td><input name=\"chkSelect\" type=\"checkbox\" title=\"Select\" onclick=\"return isallchecked()\" id=" + lgUID.ToString() + " /></td><td ><a style=\"color: black;\" href=\"../Configuration/ProductManage?" + (lgUID.ToString() + "|Id") + "\" >" + strUName + "</a></td><td>" + strDesc + "</td><td>" + strIsActive + "</td></tr>");
                        }
                        else if (i == 1)
                        {
                            strProductGrd.Append("<tr ><td><input name=\"chkSelect\" type=\"checkbox\" title=\"Select\" onclick=\"return isallchecked()\" id=" + lgUID.ToString() + " /></td><td ><a style=\"color: black;\" href=\"../Configuration/ProductManage?" + (lgUID.ToString() + "|Id") + "\" >" + strUName + "</a></td><td>" + strDesc + "</td><td>" + strIsActive + "</td></tr>");
                        }
                        else if (i % 2 == 0)
                        {
                            strProductGrd.Append("<tr ><td><input name=\"chkSelect\" type=\"checkbox\" title=\"Select\" onclick=\"return isallchecked()\" id=" + lgUID.ToString() + " /></td><td ><a style=\"color: black;\" href=\"../Configuration/ProductManage?" + (lgUID.ToString() + "|Id") + "\" >" + strUName + "</a></td><td>" + strDesc + "</td><td>" + strIsActive + "</td></tr>");
                        }
                        else
                        {
                            strProductGrd.Append("<tr ><td><input name=\"chkSelect\" type=\"checkbox\" title=\"Select\" onclick=\"return isallchecked()\" id=" + lgUID.ToString() + " /></td><td ><a style=\"color: black;\" href=\"../Configuration/ProductManage?" + (lgUID.ToString() + "|Id") + "\" >" + strUName + "</a></td><td>" + strDesc + "</td><td>" + strIsActive + "</td></tr>");
                        }
                    }

                    strProductGrd.Append("</tbody></table>");

                    if (inTotalRows > 0)
                    {
                        strProductGrd.Append("<div><label style=\"color:white;\">Show  <select id=\"ddlSelect\" size=\"1\" onchange=\"return LoadGrd();\">");
                        strProductGrd.Append("</select>  entries</label></div>");
                    }

                    strProductGrd.Append("<div >");

                    if (PageIndex == 1 && inTotalRows <= Convert.ToInt16(strSize))
                    {
                        strProductGrd.Append("Showing 1 to " + ObjGetAllProduct.Count + " of " + inTotalRows + "</div><div ><div title=\"Previous\"></div><div title=\"Next\" style=\"cursor: pointer;\" onclick=\"return ChangePageIndex(this.title)\">NEXT</div></div>");
                    }
                    else if (PageIndex == 1)
                    {
                        strProductGrd.Append("Showing 1 to " + ObjGetAllProduct.Count + " of " + inTotalRows + "</div><div ><div title=\"Previous\"></div><div title=\"Next\" style=\"cursor: pointer;\" onclick=\"return ChangePageIndex(this.title)\">NEXT</div></div>");
                    }
                    else if (PageIndex == Convert.ToInt16(TempData["TotalPages"]))
                    {
                        strProductGrd.Append("Showing " + pageno + " to " + inTotalRows + " of " + inTotalRows + "</div><div ><div title=\"Previous\" style=\"cursor: pointer;\" onclick=\"return ChangePageIndex(this.title)\">PREVIOUS</div><div title=\"Next\"></div></div>");
                    }
                    else
                    {
                        strProductGrd.Append("Showing " + pageno + " to " + (ObjGetAllProduct.Count + pageno - 1) + " of " + inTotalRows + "</div><div ><div title=\"Previous\" style=\"cursor: pointer;\" onclick=\"return ChangePageIndex(this.title)\">PREVIOUS</div><div title=\"Next\" style=\"cursor: pointer;\" onclick=\"return ChangePageIndex(this.title)\">NEXT</div></div>");
                    }
                    TempData["TotalPages"] = ObjGetAllProduct.ElementAt(0).PageCount.ToString();
                }
                else
                {
                    strProductGrd.Append("</tbody></table>");
                }
                return strProductGrd.ToString();
            }
            catch (Exception ex)
            {
                return "";
            }
        }

        public JsonResult GetPaging()
        {
            int intTotalCount = 0;
            if (TempData["TotalRows"] != null)
            {
                intTotalCount = Convert.ToInt16(TempData["TotalRows"]);
                TempData["TotalRows"] = intTotalCount.ToString();
            }
            List<SelectListItem> GetPaginglst = new List<SelectListItem>();
            GetPaginglst.Add(new SelectListItem { Text = "50", Value = "50" });
            if (intTotalCount > 50 && intTotalCount <= 100)
            {
                GetPaginglst.Add(new SelectListItem { Text = "100", Value = "100" });
            }
            if (intTotalCount > 100 && intTotalCount <= 250)
            {
                GetPaginglst.Add(new SelectListItem { Text = "100", Value = "100" });
                GetPaginglst.Add(new SelectListItem { Text = "250", Value = "250" });
            }
            else if (intTotalCount > 250)
            {
                GetPaginglst.Add(new SelectListItem { Text = "100", Value = "100" });
                GetPaginglst.Add(new SelectListItem { Text = "250", Value = "250" });
                GetPaginglst.Add(new SelectListItem { Text = "500", Value = "500" });
            }
            return Json(GetPaginglst, JsonRequestBehavior.AllowGet);
        }

        public void SetAction(string strArchiveAll)
        {
            try
            {
                if (strArchiveAll == "")
                {
                    TempData["chkDelete"] = null;
                }
                else
                {
                    TempData["chkDelete"] = strArchiveAll;
                }
            }
            catch (Exception ex)
            {              
            }
        }

        #endregion
    }
}

Step 2

[[[[[[[Step 2]]]]]]]]]
Product.js
=================
window.onload = function () {
    if (document.getElementById('hdnPageSize') != null) {
        document.getElementById('hdnPageSize').value = '50';
    }
    LoadGrd();
}
function LoadGrd() {
    if (document.getElementById('txtFilter') != null) {
        document.getElementById('txtFilter').value = '';
        document.getElementById('txtFilter').focus();
    }
    var ddlSelect;
    if (document.getElementById('ddlSelect') != null) {
        var e = document.getElementById("ddlSelect");
        ddlSelect = e.options[e.selectedIndex].value;
    }
    else {
        if (document.getElementById('hdnPageSize') != null) {
            ddlSelect = document.getElementById('hdnPageSize').value;
        }
        else {
            if (document.getElementById('hdnPageSize') != null) {
                ddlSelect = document.getElementById('hdnPageSize').value;
            }
            else {
                ddlSelect = '50';
            }
        }
    }
    $.post("/Product/LoadProduct/", { strSize: ddlSelect, strFilterText: '' },
           function (data) {
               if (data.toString() != "" && document.getElementById("dvProduct") != null) {
                   document.getElementById("dvProduct").innerHTML = data.toString();
               }
               LoadPagging(ddlSelect);
           });
}
function LoadProductGrd() {
    var txtSearch;
    if (document.getElementById('txtFilter') != null) {
        txtSearch = $("#txtFilter").val();
        document.getElementById('txtFilter').focus();
    }
    var ddlSelect;
    if (document.getElementById('ddlSelect') != null) {
        var e = document.getElementById("ddlSelect");
        ddlSelect = e.options[e.selectedIndex].value;
    }
    else {
        ddlSelect = '50';
    }
    $.post("/Product/MangeSortDirection/", { strSize: ddlSelect, strFilterText: txtSearch },
        function (data) {
            if (data.toString() != "" && document.getElementById("dvProduct") != null) {
                document.getElementById("dvProduct").innerHTML = data.toString();
                LoadPagging(ddlSelect);
            }
        });
}
function LoadPagging(selectedval) {
    $.post("/Product/GetPaging/", function (data) {
        var ddlSelect = $('#ddlSelect');
        ddlSelect.empty();
        $.each(data, function (index, Select) {
            if (Select.Value == selectedval) {
                ddlSelect.append($('<option/>').attr('value', Select.Value).text(Select.Text).attr('Selected', true));
            }
            else {
                ddlSelect.append($('<option/>').attr('value', Select.Value).text(Select.Text));
            }
        });
    });
}
function ClickDelete() {
    var selectcnt, chkBoxes, chkleng;
    selectcnt = 0;
    if (document.getElementsByName("chkSelect") != null) {
        chkBoxes = document.getElementsByName("chkSelect");
    }
    chkleng = chkBoxes.length;
    for (var i = 0; i < chkleng; i++) {
        if (chkBoxes[i].checked == true) {
            selectcnt += 1;
        }
    }
    if (selectcnt == 0) {
        alert('Please select atleast one record to delete.');
    }
    else {
        var answer = confirm("Are you sure to delete record(s)?")
        if (answer) {
            $.post("/Product/DeleteProduct/", function (data) {
                if (data.toString() != "" && document.getElementById("dvProduct") != null) {
                    document.getElementById("dvProduct").innerHTML = data.toString();
                    var Size;
                    if (document.getElementById('hdnPageSize') != null) {
                        Size = document.getElementById('hdnPageSize').value;
                    }
                    else {
                        Size = '50';
                    }
                    LoadPagging(Size);
                }
            });
        }
        else {
            return false;
        }
    }
}
function FilterGrd(evnt, objFilterText) {
    var key = (evnt.which || evnt.keyCode || evnt.charCode);
    if (key == 13) {
        var ddlSelect;
        if (document.getElementById('ddlSelect') != null) {
            var e = document.getElementById("ddlSelect");
            ddlSelect = e.options[e.selectedIndex].value;
        }
        else {
            if (document.getElementById('hdnPageSize') != null) {
                ddlSelect = document.getElementById('hdnPageSize').value;
            }
            else {
                ddlSelect = '50';
            }
        }
        $.post("/Product/LoadProduct/", { strSize: ddlSelect, strFilterText: objFilterText }, function (data) {
            if (data.toString() != "" && document.getElementById("dvProduct") != null) {
                document.getElementById("dvProduct").innerHTML = data.toString();
            }
            LoadPagging(ddlSelect);
        });
    }
}
function ChangePageIndex(Objaction) {
    if (document.getElementById('txtFilter') != null) {
        var objFilterText = document.getElementById('txtFilter').value;
    }
    var ddlSelect;
    if (document.getElementById('ddlSelect') != null) {
        var e = document.getElementById("ddlSelect");
        ddlSelect = e.options[e.selectedIndex].value;
    }
    else {
        if (document.getElementById('hdnPageSize') != null) {
            ddlSelect = document.getElementById('hdnPageSize').value;
        }
        else {
            ddlSelect = '50';
        }
    }
    $.post("/Product/ChangePageIndexProduct/", { strAction: Objaction, strSize: ddlSelect, strFilterText: objFilterText }, function (data) {
        if (data.toString() != "" && document.getElementById("dvProduct") != null) {
            document.getElementById("dvProduct").innerHTML = data.toString();
        }
        LoadPagging(ddlSelect);
    });
}
function SelectAllCheckbox() {
    var ckhid;
    var allckhid;
    var selectcnt = 0;
    var chkBoxes;
    if (document.getElementsByName("chkSelect") != null) {
        chkBoxes = document.getElementsByName("chkSelect");
    }
    var chkleng = chkBoxes.length;
    if (document.getElementsByName('selectall') != null) {
        if (document.getElementsByName('selectall')[0].checked == true) {
            for (var i = 0; i < chkleng; i++) {
                chkBoxes[i].checked = true;
                ckhid = chkBoxes[i].id;
                selectcnt += 1;

                if (allckhid != undefined) {
                    allckhid = ckhid + '|' + allckhid
                }
                else {
                    allckhid = ckhid;
                }
            }
        }
        else {
            for (var j = 0; j < chkleng; j++) {
                chkBoxes[j].checked = false;
                selectcnt = 0;
                allckhid = undefined;
            }
        }
    }
    if (allckhid == undefined) {
        allckhid = '';
    }
    var URL = "/Product/SetAction/";
    $.post(URL, {
        strArchiveAll: allckhid
    });
}
function isallchecked() {

    var ckhid;
    var allckhid;
    var selectcnt = 0;
    var chkBoxes;
    if (document.getElementsByName("chkSelect") != null) {
        chkBoxes = document.getElementsByName("chkSelect");
    }
    var chkleng = chkBoxes.length;
    for (var i = 0; i < chkleng; i++) {
        if (chkBoxes[i].checked == true) {
            selectcnt += 1;
            ckhid = chkBoxes[i].id;
            if (allckhid != undefined) {
                allckhid = ckhid + '|' + allckhid
            }
            else {
                allckhid = ckhid;
            }
        }
        if (selectcnt == chkleng) {
            document.getElementsByName('selectall').checked = true;
        }
        else {
            document.getElementsByName('selectall').checked = false;
        }
    }
    if (allckhid == undefined) {
        allckhid = '';
    }
    var URL = "/Product/SetAction/";
    $.post(URL, {
        strArchiveAll: allckhid
    });
}

MVC Grid Binding Using Json

[[[[[[[Step 1]]]]]]]]]

ProductList.cshtml
==================
@{

    Layout = null;

}

<!DOCTYPE html>

<html>

<head>

    <meta name="viewport" content="width=device-width" />

    <title>Product List</title>

    <script src="../../Content/Script/jquery-1.4.4.js" type="text/javascript"></script>

    <script src="../../Content/Script/Product.js" type="text/javascript"></script>

</head>

<body>

    <div>

        <a onclick="return ClickDelete();" style="cursor: pointer;">Delete</a>

        <br />

        <br />

        <div>

            <label>

                Search:

                <input id="txtFilter" type="text" onkeyup="return FilterGrd(event, this.value);" />

            </label>

        </div>

    </div>

    <div id="dvProduct">

    </div>

    @Html.Hidden("hdnPageSize")

</body>

</html>

Pagging logic in MVC

StringBuilder sb = new StringBuilder();

                sb.Append("<span class=\"pagshow\">Show</span><select id=\"ddlPageSize\" onchange=\"loadData(0)\" >");
                if (intPageSize == 10)
                {
                    sb.Append("<option value=\"10\"  selected=\"selected\" >10</option>");
                }
                else
                {
                    sb.Append("<option value=\"10\">10</option>");
                }
                if (intPageSize == 25)
                {
                    sb.Append("<option value=\"25\" selected=\"selected\" >25</option>");
                }
                else
                {
                    sb.Append("<option value=\"25\" >25</option>");
                }
                if (intPageSize == 50)
                {
                    sb.Append("<option value=\"50\" selected=\"selected\">50</option>");
                }
                else
                {
                    sb.Append("<option value=\"50\">50</option>");
                }
                if (intPageSize == 75)
                {
                    sb.Append("<option value=\"75\" selected=\"selected\" >75</option>");
                }
                else
                {
                    sb.Append("<option value=\"75\">75</option>");
                }
                if (intPageSize == 100)
                {
                    sb.Append("<option value=\"100\" selected=\"selected\"  >100</option>");
                }
                else
                {
                    sb.Append("<option value=\"100\">100</option>");
                }
                sb.Append("</select>Entries</span>");
                sb.Append("<ul class=\"pagination fr\"  >");
                sb.Append("<li class=\"first\">");
                if (intCurrentIndex == 0)
                {
                    sb.Append("<a href=\"javascript:void(0)\" class=\"disable\"  >‹‹</a>");
                }
                else
                {
                    sb.Append("<a href=\"javascript:void(0)\" onclick=\"loadData(0)\" >‹‹</a>");
                }
                sb.Append("</li>");

                sb.Append("<li class=\"previous\">");
                if (intCurrentIndex == 0)
                {
                    sb.Append("<a href=\"javascript:void(0)\" class=\"disable\">‹</a>");
                }
                else
                {
                    sb.Append("<a href=\"javascript:void(0)\" onclick=\"loadData(" + (intCurrentIndex - 1) + ")\" >‹</a>");
                }
                sb.Append("</li>");
                sb.Append("<li class=\"next\">");
                if ((intCurrentIndex == intTotalRowCount - 1) || intTotalRowCount == 0)
                {
                    sb.Append("<a href=\"javascript:void(0)\" class=\"disable\">›</a>");
                }
                else
                {
                    sb.Append("<a href=\"javascript:void(0)\" onclick=\"loadData(" + (intCurrentIndex + 1) + ")\" >›</a>");
                }
                sb.Append("</li>");

                sb.Append("<li class=\"last\">");
                if ((intCurrentIndex == intTotalRowCount - 1) || intTotalRowCount == 0)
                {
                    sb.Append("<a href=\"javascript:void(0)\" class=\"disable\">››</a>");
                }
                else
                {
                    sb.Append("<a href=\"javascript:void(0)\"  onclick=\"loadData(" + (intTotalRowCount - 1) + ")\" >››</a>");
                }
                sb.Append("</li>");
                sb.Append("</ul>");
                return sb.ToString();