Tuesday, June 8, 2021

Power Apps: App on start collection (Over coming the 2000 records limitation from any db in power app)

 

1. first Create collection on onStart of App and click on  runonstart option from 3 dots.

# sharepoint list have column batchid for filtering purpose

=====================================================

Concurrent(ClearCollect(KT1,Filter(TKM_V_Lookup_ExcelData,BatchId=10)),

ClearCollect(KT2,Filter(TKM_V_Lookup_ExcelData,BatchId=15)),

ClearCollect(KT3,Filter(TKM_V_Lookup_ExcelData,BatchId=20)));

ClearCollect(KITData,KT1,KT2,KT3);

=====================================================

2. Bind dropdown on items: KITData collection  (showing KIT Number)

     Distinct(KITData,KIT_NUMBER).Result

3. if you have cascading ddl then, on Items:   (showing Contract Number)

Filter(KITData,KIT_NUMBER=ComboBox1.Selected.Result)

4. Bind other text fields on default:

-------------------------------------------------------

If( SharePointForm1.Mode = FormMode.New || SharePointForm1.Mode = FormMode.Edit,

    ( If( (!IsBlank(ComboBox2.SelectedItems)),  Concat( ComboBox2.SelectedItems,

            'CONTRACT_ NUMBER'   ),  Parent.Default ) ),    Parent.Default)

-------------------------------------------------


Monday, February 1, 2021

Web API Example with File upload

 <html xmlns="http://www.w3.org/1999/xhtml">

<head>

    <title></title>

    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

    <script type="text/javascript">

        $(document).ready(function () {

            $("#getbtn").click(function () {

                GetRequest();

            });

        });


        function GetRequest() {


            var ibObj = {

                RequestorName: $("#txtRequestor").val(),

                RequestorEmail: $("#txtRequestorEmail").val(),

                RequestTitle: $("#txtTitle").val(),

                Description: $("#txtDesc").val(),

                RequestType: $("#ddlRequestType").val(),

                RequestPriority: $("#ddlReqPriorty").val(),

                ExpCompleteDate: $("#txtReqCompletionDate").val(),

                GISTicketNo: $("#txtgis").val(),

                FileName:fileName,

                FileByteArray: fileByteArray

            }


            var obj = JSON.stringify(ibObj);


            $.ajax({

                url: "api/ibase/IbaseEntity/",

                type: "POST",

                data: obj,

                dataType: "json",

                contentType: "application/json; charset=utf-8",

                success: function (data) {

                    $("#ibase").text(data);                 

                },

                error: function (error) {

                    alert(JSON.stringify(error));

                }

            });


        }


        var fileByteArray = []; var fileName;

        function getFilebytes() {

            var file = document.getElementById("fileUpload").files[0];

            fileName = file.name;

            let fileReader = new FileReader();


            fileReader.readAsArrayBuffer(file);

            fileReader.onload = function (ev) {

                const array = new Uint8Array(ev.target.result);

                for (let i = 0; i < array.length; i++) {

                    fileByteArray.push(array[i]);

                }

                console.log(fileByteArray); // here it is

            }

        }

    </script>

    <style>

        table {

            height: 200px;

        }

    </style>

</head>

<body>


    <div id="ibase" style="color:green"></div><br />

    <div>

        <table>

            <tr>

                <td>Request Title:</td>

                <td><input id="txtTitle" type="text" /></td>

            </tr>

            <tr>

                <td>Request Type:</td>

                <td>

                    <select name="ddlRequestType" id="ddlRequestType" class="form-control">

                        <option value="--Select--">--Select--</option>

                        <option value="Request New Field">Request New Field</option>

                        <option value="Add Assemblies">Add Assemblies</option>

                        <option value="Data Cleanup">Data Cleanup</option>

                        <option value="Other">Other</option>

                    </select>

                </td>

            </tr>

            <tr>

                <td>Request Priority:</td>

                <td>

                    <select name="ddlReqPriorty" id="ddlReqPriorty" class="form-control">

                        <option value="--Select--">--Select--</option>

                        <option value="P1:Critical">P1:Critical</option>

                        <option value="P2:High">P2:High</option>

                        <option value="P3:Medium">P3:Medium</option>

                        <option value="P4:Low">P4:Low</option>

                    </select>

                </td>

            </tr>

            <tr>

                <td>Expected Completion Date:</td>

                <td><input id="txtReqCompletionDate" type="text" value="2021-01-27" /></td>

            </tr>

            <tr>

                <td>Description:</td>

                <td><input id="txtDesc" type="text" value="desc" /></td>


            </tr>

            <tr>

                <td>GIS Ticket No:</td>

                <td><input id="txtgis" type="text" value="12345" /></td>


            </tr>

            <tr>

                <td>RequestorName</td>

                <td><input id="txtRequestor" type="text" value="Navneet Sharma --CNTR" /></td>


            </tr>

            <tr>

                <td>RequestorEmail</td>

                <td><input id="txtRequestorEmail" typetext value="navneet_sharma@contractor.amat.com" /></td>


            </tr>

            <tr>

                <td>File Upload</td>

                <td><input id="fileUpload" type="file" onchange="getFilebytes()" /></td>


            </tr>

            <tr>               

                <td colspan="2"><br /><input id="getbtn" type="button" value="Save" /></td>

            </tr>

        </table>

       

        <br />

       

       

    </div>



</body>

</html>

Monday, January 4, 2021

Web API formatters

 Web API returning default JSON with proper indentation

------------------------------------------------------------------------

 public static class WebApiConfig

    {

        public static void Register(HttpConfiguration config)

        {

            // Web API configuration and services

            // Configure Web API to use only bearer token authentication.

            config.SuppressDefaultHostAuthentication();

            config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));


            // Web API routes

            config.MapHttpAttributeRoutes();


            config.Routes.MapHttpRoute(

                name: "DefaultApi",

                routeTemplate: "api/{controller}/{id}",

                defaults: new { id = RouteParameter.Optional }

            );

            config.Formatters.Remove(config.Formatters.XmlFormatter);

            config.Formatters.JsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;

            config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

        }

    }

Tuesday, December 15, 2020

JQ Grid Examples


JQ Grid Examples:

=============


 http://www.ok-soft-gmbh.com/jqGrid/ActionButtons.htm

http://www.ok-soft-gmbh.com/jqGrid/SimpleLocalGridWithInlineEditingOnEnter.htm

http://www.ok-soft-gmbh.com/jqGrid/SimpleLocalGridWithInlineEditingAndHide.htm

https://www.ok-soft-gmbh.com/jqGrid/OK/performane-13-5000-25-free-jqgrid.htm

http://www.ok-soft-gmbh.com/jqGrid/SubgridWithLocalGrid.htm

http://www.ok-soft-gmbh.com/jqGrid/OK/LocalAdjacencyTree-expandCallapsAll.htm

http://www.ok-soft-gmbh.com/jqGrid/OK/performane-1000-free-grid-groupingAll.htm



Friday, November 27, 2020

Convert JSON object array to c# class

 requestIds ="JSON array object" 

 JsonTextReader reader = new JsonTextReader(new System.IO.StringReader(requestIds));

            JsonSerializer serializer = new JsonSerializer();

            var objContent = serializer.Deserialize(reader).ToString();


            JArray objArray = null;

            try

            {

                objArray = JArray.Parse(objContent);


            }

            catch (Exception ex)

            {

                objContent = "[" + objContent + "]";

            }


            IList<SubscriptionObject> arrarylist = Newtonsoft.Json.JsonConvert.DeserializeObject<IList<SubscriptionObject>>(objContent);

Thursday, September 17, 2020

Getting data through Web API from SQL and implementing in Ajax call in SharePoint content editor web part (Dashboard Refresh API, )

  Javascript in CE webpart:

-----------------------------------

function GetDashboardRefreshDetails(dashBoardName) {


//var listURL ="https://team.amat.com/sites/BIM_QA";

//var url ="/_api/Web/Lists/GetByTitle('BIM Search')/Items?$select=Name,ContentType0,link,BusinessOwningFunction,Active&$filter=BusinessOwningFunction eq '"+pageName+"' and Active eq 1";

var url = "http://spqaappweb.amat.com/DashboardRefreshAPI/API/DashboardAPI?dashboardName='"+dashBoardName+"'";

//var url = "http://localhost:50565/Api/DashboardApi";

    $.ajax({

        url: url,

        type: 'GET',

        crossDomain: true,

        dataType: 'jsonp',

        contentType: "application/json; charset=utf-8",

            success : function(response) {

       Getdata(response);

    },

        error: function (error) {

          // alert(JSON.stringify(error));

        }

    });

}

function Getdata(response){

if(response.length > 0){}

}


======================================================================

C# controller code:

--------------

 public void GetRefreshDetails(string dashboardName)

        {          

            dashboardName = dashboardName.Substring(1, dashboardName.Length - 2);

            BAL obj = new BAL();

             List<BAL> objList = obj.GetRefreshData(dashboardName);

             StringBuilder sb = new StringBuilder();

             JavaScriptSerializer js = new JavaScriptSerializer();

             var callBackFunction = HttpContext.Current.Request["callback"];

             sb.Append(callBackFunction + "(");

             sb.Append(js.Serialize(objList));

             sb.Append(");");


             HttpContext.Current.Response.Clear();

             HttpContext.Current.Response.ContentType = "application/json";

             HttpContext.Current.Response.Write(sb.ToString());

             HttpContext.Current.Response.End();

           //  return objList;

        }


        [WebMethod()]

        [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]

        public void GetToolsCount()

        {

            ToolsData obj = new ToolsData();

            List<ToolsData> objList = obj.GetToolsCount();

            StringBuilder sb = new StringBuilder();

            JavaScriptSerializer js = new JavaScriptSerializer();

            var callBackFunction = HttpContext.Current.Request["callback"];

            sb.Append(callBackFunction + "(");

            sb.Append(js.Serialize(objList));

            sb.Append(");");

            HttpContext.Current.Response.Clear();

            HttpContext.Current.Response.ContentType = "application/json";

            HttpContext.Current.Response.Write(sb.ToString());

            HttpContext.Current.Response.End();

            //  return objList;

        }       

    }

=====================================================================
C# Modal
------------------
public class ToolsData
    {
        public string Tools { get; set; }
        public string ActiveTools { get; set; }
        public string ContractTools { get; set; }
        public string WarrantyTools { get; set; }
        public string InsatllTools { get; set; }
        public string SemiTools { get; set; }
        public string DisplayTools { get; set; }
        public string VarianTools { get; set; }
        public string OtherTools { get; set; }
        public string Chambers { get; set; }

        public List<ToolsData> GetToolsCount()
        {
            DataTable dt = new DataTable();          
            List<ToolsData> objList = new List<ToolsData>();
            DAL objDal = new DAL();
            dt = objDal.GetToolData();
            if (dt != null)
            {
                foreach (DataRow row in dt.Rows)
                {
                    ToolsData obj = new ToolsData();
                    obj.Tools = Convert.ToString(row["Tools"]);
                    obj.ActiveTools = Convert.ToString(row["ActiveTools"]);
                    obj.ContractTools = Convert.ToString(row["InContractTools"]);
                    obj.WarrantyTools = Convert.ToString(row["InWarrantyTools"]);
                    obj.InsatllTools = Convert.ToString(row["InInstallTools"]);
                    obj.SemiTools = Convert.ToString(row["SemiTools"]);
                    obj.DisplayTools = Convert.ToString(row["DisplayTools"]);
                    obj.VarianTools = Convert.ToString(row["VarianTools"]);
                    obj.OtherTools = Convert.ToString(row["OtherTools"]);
                    obj.Chambers = Convert.ToString(row["Chambers"]);
                    objList.Add(obj);

                }
            }
            return objList;
        }
    }
========================================
C# Data Access
-----------------------
public DataTable GetRefreshData(string dashboardname)
        {
            DataTable dt = new DataTable();
            DataSet ds = new DataSet();
            using (SqlConnection con = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand("DashboardRefreshMatrix", con))
                {
                    cmd.CommandType = CommandType.StoredProcedure;

                    cmd.Parameters.AddWithValue("@dashboardname", dashboardname);
                    SqlDataAdapter ad = new SqlDataAdapter(cmd);
                    ad.Fill(ds);
                    if (ds.Tables.Count > 0)
                        dt = ds.Tables[0];
                }
            }
            return dt;
        }

        public DataTable GetToolData()
        {
            DataTable dt = new DataTable();
            DataSet ds = new DataSet();
            using (SqlConnection con = new SqlConnection(connStr))
            {
                using (SqlCommand cmd = new SqlCommand("GetToolsData", con))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlDataAdapter ad = new SqlDataAdapter(cmd);
                    ad.Fill(ds);
                    if (ds.Tables.Count > 0)
                        dt = ds.Tables[0];
                }
            }
            return dt;
        }
        
    }
=======================================================================
WebApiConfig.cs  file
------------------------

public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
          
            config.MapHttpAttributeRoutes();
           
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            var jsonpFormatter = new JsonpMediaTypeFormatter(config.Formatters.JsonFormatter);
            config.Formatters.Insert(0, jsonpFormatter);

            //var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
            //config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);

            config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
        }