Monday 24 December 2012

highlight the searched text in RadListBox and move checked items in to top of the list

JS
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
    <script type="text/javascript" language="javascript">
        function onChangeFilterByName(g, text) {
            var f = $find("<%= RadListBox1.ClientID %>");
            if (f._enableMarkMatches && ($telerik.isIE || $telerik.isChrome)) {
                var h = g.keyCode == Sys.UI.Key.backspace || g.keyCode == Sys.UI.Key.esc || g.keyCode == Sys.UI.Key.space || g.keyCode == Sys.UI.Key.down || g.keyCode == Sys.UI.Key.up;
                if (h) {
                    var j = f._onKeyPress(g);
                    g.preventDefault();
                    if (j) { return; }
                }
            }
            f._onKeyDown(g);
            f._onKeyPress(g);
        }
        function onChangeFilterByName1(txtFilterByName) {
            var check = 0;
            var listbox = $find("<%= RadListBox1.ClientID %>");
            var items = listbox.get_items();
            var itemContainsSearchText = new Array();
            var index = 0;
            {
                for (var i = 0; i <= items.get_count() - 1; i++) {
                    var item = items.getItem(i);
                    if (!item.get_checked() && item.get_text().toLowerCase().startsWith(txtFilterByName.value.toLowerCase())) {
                        item.scrollIntoView();
                        item.ensureVisible();
                        var text = item.get_text();
                        var replace = String.format("<span class=\"rlbHighlight\">{0}</span>", text);
                        item.set_text(replace);
                        //break;
                    }
                }
            }
        }

        function OnClientItemCheckedHandler(sender, eventArgs) {
            var item = eventArgs.get_item();
            var checkedItem = sender.get_checkedItems();
            checkedItem.sort(sortAscByText);
            var allItems = sender.get_items().toArray();
            for (var i = 0; i < checkedItem.length; i++) {
                sender.reorderItem(checkedItem[i], i);
            }

            if (!item.get_checked()) {
                //removed checked items
                for (var i = 0; i < checkedItem.length; i++) {
                    var index = allItems.indexOf(checkedItem[i]);
                    allItems.splice(index, 1);
                }
                //reorder uncheck items.
                allItems.sort(sortAscByText);
                var index = checkedItem.length;
                for (var i = 0; i < allItems.length; i++) {
                    sender.reorderItem(allItems[i], index);
                    index = index + 1;
                }
            }
        }

        function sortAscByText(a, b) {
            return a.get_text() == b.get_text() ? 0 : a.get_text() < b.get_text() ? -1 : 1
        }
    </script>
</telerik:RadCodeBlock>
ASPX
<div>
        <asp:TextBox ID="txtSort" runat="server" Width="195px" OnKeyUp="onChangeFilterByName(event,this)"></asp:TextBox><br />
        <br />
        <telerik:RadListBox ID="RadListBox1" runat="server" CheckBoxes="true" Width="200px"
            Height="200px" SelectionMode="Multiple" TabIndex="1" EnableMarkMatches="true"
            OnClientItemChecked="OnClientItemCheckedHandler">
            <Items>
                <telerik:RadListBoxItem Text="Argentina" Value="1"></telerik:RadListBoxItem>
                <telerik:RadListBoxItem Text="Australia" Value="2"></telerik:RadListBoxItem>
                <telerik:RadListBoxItem Text="Brazil" Value="3"></telerik:RadListBoxItem>
                <telerik:RadListBoxItem Text="Canada" Value="4"></telerik:RadListBoxItem>
                <telerik:RadListBoxItem Text="Chile" Value="5"></telerik:RadListBoxItem>
                <telerik:RadListBoxItem Text="China" Value="6"></telerik:RadListBoxItem>
                <telerik:RadListBoxItem Text="Egypt" Value="7"></telerik:RadListBoxItem>
                <telerik:RadListBoxItem Text="England" Value="8"></telerik:RadListBoxItem>
                <telerik:RadListBoxItem Text="France" Value="9"></telerik:RadListBoxItem>
                <telerik:RadListBoxItem Text="Germany" Value="10"></telerik:RadListBoxItem>
                <telerik:RadListBoxItem Text="India" Value="11"></telerik:RadListBoxItem>
                <telerik:RadListBoxItem Text="Indonesia" Value="12"></telerik:RadListBoxItem>
                <telerik:RadListBoxItem Text="Kenya" Value="13"></telerik:RadListBoxItem>
                <telerik:RadListBoxItem Text="Mexico" Value="14"></telerik:RadListBoxItem>
                <telerik:RadListBoxItem Text="New Zealand" Value="15"></telerik:RadListBoxItem>
                <telerik:RadListBoxItem Text="South Africa" Value="16"></telerik:RadListBoxItem>
            </Items>
        </telerik:RadListBox>
    </div>
Output of this code:


This code is contributed form Abidali Suthar [one of the developer in my team].

Wednesday 5 December 2012

Apply MCTS (70-480) for Programming in HTML5 with JavaScript and CSS3 Exam At free of cost

I would like to announce for those entire eager professionals who want to appear / earn MCTS exam certification. By using promo code “HTMLJMP” or "HTMLMPN" in promatric center, you will be appear exam at free of cost (deduct $80 exam fee).



 


Moreover get reference of exam detail Please go through link,http://www.microsoft.com/learning/en/us/exam.aspx?id=70-480

For schedule an exam please go through this link : http://weblogs.asp.net/sreejukg/archive/2013/01/03/get-certified-for-free-microsoft-offers-free-certification-exam-70-480.aspx

Let me know if you need any further information.
 

 

Friday 23 November 2012

DENSE_RANK(), RANK() and ROW_NUMBER()

CREATE TABLE #Department(DeptId int NOT NULL,DeptName nvarchar(max))
CREATE TABLE #Emp(EmpId int NOT NULL,DeptId int NOT NULL,EmpName nvarchar(max),Salary int)

INSERT INTO #Department (DeptId,DeptName) values(1,'D1')
INSERT INTO #Department (DeptId,DeptName) values(2,'D2')

INSERT INTO #Emp (EmpID,DeptId,EmpName,Salary) values(1,1,'A1',1000)
INSERT INTO #Emp (EmpID,DeptId,EmpName,Salary) values(2,1,'A2',2000)
INSERT INTO #Emp (EmpID,DeptId,EmpName,Salary) values(3,1,'A3',1000)
INSERT INTO #Emp (EmpID,DeptId,EmpName,Salary) values(4,2,'A4',1000)
INSERT INTO #Emp (EmpID,DeptId,EmpName,Salary) values(5,2,'A5',5000)

select dense_rank() over (partition by DeptId order by Salary) [dense_rank],
             rank() over (partition by DeptId order by Salary) [rank],
       row_number() over (partition by DeptId order by Salary) [row_number],
              DeptId,Salary
from #Emp;

Drop Table #Emp
Drop Table #Department
Output of above code:

Monday 15 October 2012

Validate Upload control in KendoUI

.cshtml
<script type="text/javascript">

$(document).ready(function () {
   var validator = $("#ValidateDemoContainer").kendoValidator().data("kendoValidator");
       $("button").click(function (e) {
       //Validate Upload Control
       if ($("#UploadedFile").parent().siblings("ul").length > 0) {
               $("#UploadedFile").removeAttr("required");
       }
       //Validate Other control, which inside "ValidateDemoContainer"  
       if (!validator.validate()) {
               e.preventDefault();
            }
       });
});

</script>




 <div id="ValidateDemoContainer">
@using (Html.BeginForm("Method", "Controller", FormMethod.Post, new { id = "YourId", enctype = "multipart/form-data"}))
{
        @(Html.Kendo().Upload()
            .Name("UploadedFile")
            .Multiple(false)
            .HtmlAttributes(new { required = true })
        )
        <br />
        @Html.ValidationMessageFor(m => m.UploadedFile)
        <br />
        <button class="k-button" type="submit">Submit</button>
}
</div>
Model
public class YourModel
{
        [Required(ErrorMessage = "Please provide file")]
        public System.Web.HttpPostedFileBase UploadedFile { get; set; }
}

Wednesday 10 October 2012

validation is not working in popup in mvc


// Your open popup code comes here
$('UploadActivitySheet').removeData("validator");
//Refresh the validators
$.validator.unobtrusive.parse(document);

Friday 31 August 2012

RadGrid with WCF Rest Service

Create WCF service.



IService1.cs
namespace WcfService1
{   
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json)]
        ResultData GetData(int startRowIndex, int maximumRows, string sortExpression, string filterExpression);

        [OperationContract]
        [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json)]
        bool SetParameter(string strYourParameter);
    }

    
    [DataContract]
    public class EmployeeInfo
    {
        [DataMember]
        public int EmployeeID
        {
            get;
            set;
        }

        [DataMember]
        public string EmployeeName
        {
            get;
            set;
        }
    }
}

Service1.svc.cs
namespace WcfService1
{
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class Service1 : IService1
    {
        public string SearchCriteria
        {
            set
            {
                System.Web.HttpContext.Current.Session["SearchCriteria"] = value;
            }
            get
            {
                if (System.Web.HttpContext.Current.Session["SearchCriteria"] != null)
                {
                    return Convert.ToString(System.Web.HttpContext.Current.Session["SearchCriteria"]);
                }
                else
                    return null;
            }
        }

        public ResultData GetData(int startRowIndex, int maximumRows, string sortExpression, string filterExpression)
        {
            ResultData result = new ResultData();
            result.Count = 0;
            if (this.SearchCriteria != null)
            {
                IQueryable<EmployeeInfo> yourdata = (from p in GenerateData(this.SearchCriteria)
                                                     select p).AsQueryable<EmployeeInfo>();

                GridLinqBindingData<EmployeeInfo> data = RadGrid.GetBindingData(yourdata, startRowIndex, maximumRows, sortExpression, filterExpression);

                result.Data = data.Data.OfType<EmployeeInfo>().Select(p => new EmployeeInfo()
                {
                    EmployeeID = p.EmployeeID,
                    EmployeeName = p.EmployeeName,
                }).ToList();
                result.Count = data.Count;
                return result;
            }
            return result;
        }

        public bool SetParameter(string strYourParameter)
        {
            if (!string.IsNullOrEmpty(strYourParameter))
            {
                this.SearchCriteria = strYourParameter; 
            }
            else
            {
                this.SearchCriteria = null;
            }
            return true;
        }

        protected List<EmployeeInfo> GenerateData(string parameter)
        {
            List<EmployeeInfo> empinfo = new List<EmployeeInfo>();

            for (int i = 0; i < 10; i++)
            {
                EmployeeInfo employeeInfo = new EmployeeInfo();
                employeeInfo.EmployeeID = i;
                employeeInfo.EmployeeName = parameter + i.ToString();
                empinfo.Add(employeeInfo);
            }

            for (int i = 10; i < 20; i++)
            {
                EmployeeInfo employeeInfo = new EmployeeInfo();
                employeeInfo.EmployeeID = i;
                employeeInfo.EmployeeName = parameter + i.ToString();
                empinfo.Add(employeeInfo);
            }

            for (int i = 20; i < 30; i++)
            {
                EmployeeInfo employeeInfo = new EmployeeInfo();
                employeeInfo.EmployeeID = i;
                employeeInfo.EmployeeName = parameter + i.ToString();
                empinfo.Add(employeeInfo);
            }

            return empinfo;
        }
    }

    public class ResultData
    {
        public int Count { get; set; }
        public List<EmployeeInfo> Data { get; set; }
    }

    public enum SortDirection
    {
        Ascending = 0,
        Descending = 1
    }

    public class GenericComparer<T> : IComparer<T>
    {
        public string SortExpression { get; set; }
        public int SortDirection { get; set; } // 0:Ascending, 1:Descending 

        public GenericComparer(string sortExpression, int sortDirection)
        {
            this.SortExpression = sortExpression;
            this.SortDirection = sortDirection;
        }
        public GenericComparer() { }

        #region IComparer<T> Members
        public int Compare(T x, T y)
        {
            PropertyInfo propertyInfo = typeof(T).GetProperty(SortExpression);
            IComparable obj1 = (IComparable)propertyInfo.GetValue(x, null);
            IComparable obj2 = (IComparable)propertyInfo.GetValue(y, null);

            if (obj1 == null || obj2 == null) return 0;

            if (SortDirection == 0)
            {
                return obj1.CompareTo(obj2);
            }
            else return obj2.CompareTo(obj1);
        }
        #endregion
    }
}

Web.config
<configuration>

 <system .web="">
  <compilation debug="true" targetframework="4.0">
 </compilation></system>
 <system .servicemodel="">
  <bindings>
   <webhttpbinding>
    <binding allowcookies="false" bypassproxyonlocal="false" closetimeout="00:35:00" crossdomainscriptaccessenabled="true" hostnamecomparisonmode="StrongWildcard" maxbufferpoolsize="2147483647" maxreceivedmessagesize="2147483647" name="RestServiceBinding" opentimeout="00:35:00" receivetimeout="00:35:00" sendtimeout="00:35:00" usedefaultwebproxy="true">
     <readerquotas maxarraylength="2147483647" maxbytesperread="2147483647" maxdepth="2147483647" maxnametablecharcount="2147483647" maxstringcontentlength="2147483647">
     <security mode="None">
    </security></readerquotas></binding>
   </webhttpbinding>
  </bindings>
  <behaviors>
   <endpointbehaviors>
    <behavior name="RestEndpointBehaviour">
     <webhttp automaticformatselectionenabled="false" defaultoutgoingresponseformat="Json" faultexceptionenabled="true" helpenabled="true">
    </webhttp></behavior>
   </endpointbehaviors>
   <servicebehaviors>
    <behavior name="CommonServiceBehaviour">
     <servicemetadata httpgetenabled="true">
     <servicedebug includeexceptiondetailinfaults="true">
    </servicedebug></servicemetadata></behavior>
   </servicebehaviors>
  </behaviors>
  <services>
   <service behaviorconfiguration="CommonServiceBehaviour" name="WcfService1.Service1">
    <endpoint address="" behaviorconfiguration="RestEndpointBehaviour" binding="webHttpBinding" bindingconfiguration="RestServiceBinding" contract="WcfService1.IService1"></endpoint>
   </service>
  </services>
  <servicehostingenvironment aspnetcompatibilityenabled="true">
 </servicehostingenvironment></system>
 <system .webserver="">
  <modules runallmanagedmodulesforallrequests="true">
 </modules></system>

</configuration>

RestServiceWithRadGrid.aspx
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.6.2.min.js" type="text/javascript"></script>
    <telerik:radcodeblock id="RadCodeBlock1" runat="server">
        <script type="text/javascript">
            var UrlForsetParameter = 'http://localhost/WcfService1/Service1.svc/SetParameter';

            function Setserachparameter() {
                
                var RadTextBox1 = $find("<%= RadTextBox1.ClientID %>");
                var strYourParameter = RadTextBox1.get_value();
                jQuery.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    data: JSON.stringify(strYourParameter),
                    dataType: "json",
                    url: UrlForsetParameter,

                    success: function (Responce) {
                        var grid = $find("<%=RadGrid1.ClientID %>");
                        var MasterTable = grid.get_masterTableView();
                        MasterTable.rebind();
                    },
                    error: function (xhr, ajaxOptions, thrownError) {


                    }
                });

                return false;
            }

        </script>
    </telerik:radcodeblock>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        

        <telerik:radscriptmanager id="RadScriptManager1" runat="server">
        </telerik:radscriptmanager>
        <table>
<tr>
                <td>
                    Search Text
                </td>
                <td>
                    <telerik:radtextbox id="RadTextBox1" runat="server">
                    </telerik:radtextbox>
                </td>
            </tr>
<tr>
                <td colspan="2">
                    <asp:button id="Button1" onclientclick="Setserachparameter();" runat="server" text="Get Record">
                </asp:button></td>
            </tr>
</table>
<telerik:radgrid allowpaging="true" allowsorting="true" autogeneratecolumns="false" id="RadGrid1" runat="server">
            <pagerstyle alwaysvisible="true">
            <mastertableview>
                <columns>
                    <telerik:gridboundcolumn datafield="EmployeeID" headertext="EmployeeID" uniquename="EmployeeID">
                    </telerik:gridboundcolumn>
                    <telerik:gridboundcolumn datafield="EmployeeName" headertext="EmployeeName" uniquename="EmployeeName">
                    </telerik:gridboundcolumn>
                </columns>
            </mastertableview>
            <clientsettings>
                <databinding filterparametertype="Linq" location="http://localhost/WcfService1/Service1.svc" selectmethod="GetData" sortparametertype="Linq">
                </databinding>
            </clientsettings>
        </pagerstyle></telerik:radgrid>
    </div>
</form>
</body>
</html>
You can also check this(Client Binding to WCF Web Service) link for more information.

As per above link we can able to binding our RadGrid with WCF service. But in some case we have to use more parameters in method (GetDataAndCount()) At that time you can try with above code.

In this code i have take one session properties in at service level. On button click i have set parameter in service's session property. Then after i rebind my RadGrid, so it will called method(GetDataAndCount()) in this, by using session property first of all get the specific data from DB/Generate dummy data then apply grid's parameter in it.

You can also check output in below image.


DOWNLOAD DEMO

Friday 27 July 2012

Access RadGrid Row and Column on Client Side

Get Client Data key on Client

<telerik:radcodeblock id="RadCodeBlock1" runat="server">
        <script type="text/javascript">
            function AccessOnclient() {
                var grid = $find("<%= RadGrid1.ClientID %>");
                if (grid) {
                    var MasterTable = grid.get_masterTableView();
                    var Rows = MasterTable.get_dataItems();
                    for (var i = 0; i < Rows.length; i++) {
                        var row = Rows[i];
                        var ClientDataKey_ID = row.getDataKeyValue("ID");
                    }
                }
                return false;
            }
        </script>
    </telerik:radcodeblock>
Get Template Column Control

<telerik:radcodeblock id="RadCodeBlock1" runat="server">
        <script type="text/javascript">
            function AccessOnclient() {
                var grid = $find("<%= RadGrid1.ClientID %>");
                if (grid) {
                    var MasterTable = grid.get_masterTableView();
                    var Rows = MasterTable.get_dataItems();
                    for (var i = 0; i < Rows.length; i++) {
                        var row = Rows[i];
                        // Method1
                        var lblName_1 = $(row.get_element()).find("span[id*='lblName']").get(0);
                        // Method2
                        var lblName_2 = $telerik.findControl(row.get_element(), "lblName");
                        // Method3
                        var lblName_3 = row.findControl("lblName");
                    }
                }
                return false;
            }
        </script>
    </telerik:radcodeblock>
Access Column Text

<telerik:radcodeblock id="RadCodeBlock1" runat="server">
        <script type="text/javascript">
            function AccessOnclient() {
                var grid = $find("<%= RadGrid1.ClientID %>");
                if (grid) {
                    var MasterTable = grid.get_masterTableView();
                    var Rows = MasterTable.get_dataItems();
                    for (var i = 0; i < Rows.length; i++) {
                        var row = Rows[i];
                        // Method1
                        var getCellText_1 = row.get_element().cells[0].innerHTML;
                        // Method2
                        var getCellText_2 = row.get_cell("ID").innerHTML;
                        // Method3
                        var getCellText_2 = row.get_cell("Name").getElementsByTagName("span")[0].innerHTML; //this code also work for Checkboxcolunm, hyperlinkcolumn...etc
                    }
                }
                return false;
            }
        </script>
    </telerik:radcodeblock>
Access Column's property here

<telerik:radcodeblock id="RadCodeBlock1" runat="server">
        <script type="text/javascript">
            function AccessOnclient() {
                var grid = $find("<%= RadGrid1.ClientID %>");
                if (grid) {
                    var MasterTable = grid.get_masterTableView();
                    var Columns = MasterTable.get_columns();
                    for (var i = 0; i < Columns.length; i++) {
                        var column = Columns[0];
                        var columnUniqueName = column.get_uniqueName();
                        var columnDataField = column.get_dataField();
                        var columnfilterFunction = column.get_filterFunction();
                    }
                }
                return false;
            }
        </script>
    </telerik:radcodeblock>
Access Control in Edit mode

<telerik:radcodeblock id="RadCodeBlock1" runat="server">
        <script type="text/javascript">
            function AccessOnclient() {
                var grid = $find("<%= RadGrid1.ClientID %>");
                if (grid) {
                    var EditItems = grid.get_editItems();
                    for (var i = 0; i < EditItems.length; i++) {
                        var editItem = EditItems[0];
                        var checkbox1 = $(editItem.get_editFormItem()).find("input[id*='CheckBox1']").get(0)
                    }

                }
                return false;
            }
        </script>
    </telerik:radcodeblock>
Access Control in insert mode

<telerik:radcodeblock id="RadCodeBlock1" runat="server">
    <script type="text/javascript">
        function AccessOnclient() { 
            var grid = $find("<%= RadGrid1.ClientID %>");
            if (grid) {
                var MasterTable = grid.get_masterTableView();
                var insertRow = MasterTable.get_insertItem();
                var checkbox1 = $(insertRow).find("input[id*='CheckBox1']").get(0);
                //You can access other controls from below container
                //$(insertRow)
            }
            return false;
        }
    </script>
</telerik:radcodeblock>
ASPX
<telerik:radscriptmanager id="RadScriptManager1" runat="server">
        </telerik:radscriptmanager>
        <telerik:radajaxmanager id="RadAjaxManager1" runat="server">
        </telerik:radajaxmanager>
        <telerik:radajaxloadingpanel id="RadAjaxLoadingPanel1" runat="server">
        </telerik:radajaxloadingpanel>
        <asp:button id="Button1" onclientclick="return AccessOnclient();" runat="server" text="Access On Client"></asp:button>
       
        <telerik:radgrid allowfilteringbycolumn="true" autogeneratecolumns="false" id="RadGrid1" onneeddatasource="RadGrid1_NeedDataSource" runat="server">
            <mastertableview clientdatakeynames="ID" commanditemdisplay="Top">
                <columns>
                    <telerik:gridboundcolumn datafield="ID" headertext="ID" uniquename="ID">
                    </telerik:gridboundcolumn>
                    <telerik:gridtemplatecolumn headertext="Name" uniquename="Name">
                        <itemtemplate>
                            <asp:label id="lblName" runat="server" text="&lt;%# Eval(&quot;Name&quot;) %&gt;"></asp:label>
                        </itemtemplate>
                        <edititemtemplate>
                            <asp:checkbox id="CheckBox1" runat="server">
                        </asp:checkbox></edititemtemplate>
                    </telerik:gridtemplatecolumn>
                    <telerik:grideditcommandcolumn uniquename="EditColumn">
                    </telerik:grideditcommandcolumn>
                </columns>
            </mastertableview>
        </telerik:radgrid>
ASPX.CS
 protected void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
        {
            dynamic data = new[] {
               new { ID = 1, Name ="Name_1"},
               new { ID = 2, Name = "Name_2"},
               new { ID = 3, Name = "Name_3"},
               new { ID = 4, Name = "Name_4"},
               new { ID = 5, Name = "Name_5"}
           };
            RadGrid1.DataSource = data;
        }