Wednesday, 11 June 2014

Show an Alert Message if no file was uploaded in RadfileExplorer Upload Popup

We may have scenario like to validate if no file was uploaded in Rad upload of rad file explorer
For this first write an javascript function like this in design page:
function OnClientLoad(explorer, args) {
//Find upload button and attach an event handler
                var uploadButton = $find("<%=RadFileExplorer1.ClientID%>" +"_btnUpload");
                uploadButton.add_clicked(function()
                {
                    var upload = $find('<%=RadFileExplorer1.Upload.ClientID %>');
                    var inputs = upload.getFileInputs();
                    var count = 0;
                    for (var i = 0 ; i < inputs.length; i++) {
                        if (inputs[i].value.length != 0) {
                            count++;
                        }
                    }
                    if(count == 0)
                        alert('Please select one file to upload.');
                })
            }
And add this function in RadfileExplorer client load event like

<telerik:RadFileExplorer runat="server" ID="RadFileExplorer1" OnClientLoad="OnClientLoad"  </telerik:RadFileExplorer>

Monday, 9 June 2014

Partial Page Refresh after Download of file or using of Response.end in aspx page using iframe

Initially Declare a generic Handler like this
    public class Handler1 : IHttpHandler
    {

        #region IHttpHandler Members

        private HttpContext _context;
        private HttpContext Context
        {
            get
            {
                return _context;
            }
            set
            {
                _context = value;
            }
        }


        public void ProcessRequest(HttpContext context)
        {
            Context = context;
            string filePath = context.Request.QueryString["path"];
            filePath = context.Server.MapPath(filePath);

            if (filePath == null)
            {
                return;
            }

            System.IO.StreamReader streamReader = new System.IO.StreamReader(filePath);
            System.IO.BinaryReader br = new System.IO.BinaryReader(streamReader.BaseStream);

            byte[] bytes = new byte[streamReader.BaseStream.Length];

            br.Read(bytes, 0, (int)streamReader.BaseStream.Length);

            if (bytes == null)
            {
                return;
            }

            streamReader.Close();
            br.Close();
            string extension = System.IO.Path.GetExtension(filePath);
            string fileName = System.IO.Path.GetFileName(filePath);
            WriteFile(bytes, fileName, "application/" + extension, context.Response);
        }

        /// <summary>
        /// Sends a byte array to the client
        /// </summary>
        /// <param name="content">binary file content</param>
        /// <param name="fileName">the filename to be sent to the client</param>
        /// <param name="contentType">the file content type</param>
        private void WriteFile(byte[] content, string fileName, string contentType, HttpResponse response)
        {
            response.Buffer = true;
            response.Clear();
            response.ContentType = contentType;
            response.AddHeader("content-disposition", "attachment; filename=" + fileName);
            response.BinaryWrite(content);
            response.Flush();
            response.End();
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }

        #endregion
    }
}

Next declare an iframe in aspx page (design)
<iframe id="iframe1 " style="display: none" runat="server" ></iframe>
and an update panel
<asp:UpdatePanel ID="UpdatePanel1 " runat="server" UpdateMode="Conditional">
                        <ContentTemplate>
//controls design goes here
//Lets assusme we have a GridView1 here
</ContentTemplate>
</asp:UpdatePanel>
Next in aspx codebehind file write code as follows:
Some EventHandler()
{
//Method to bind GridView1 data
UpdatePanel1.Update();
   string path="Handler1.ashx?path=" + "declare your path here";
    iframe1.Attributes["src"] = path;
}
We are done:
Now we can see the page is partially refreshed when we called that event.




Wednesday, 4 June 2014

Disable the text in Rad FileExplore Upload Popup

To disable the text in Rad FileExplore Upload Popup
Add the following Property in  onclientLoad = "OnClientLoad" on rad file explorer Property on design file
Next Add following java script :
function OnClientLoad (explorer, args) {
                $telerik.$(".ruFakeInput").attr("disabled", "disabled");
}
But this will disable the initial items only so if client clicks on Add button we need to disable them also
So add following java script like
function OnClientAdded(upload, args) {
                $telerik.$(".ruFakeInput").attr("disabled", "disabled");
            }

Next Add line like RadFileExplorer1.Upload.OnClientAdded = "OnClientAdded"; in Page load event of code behing file
We are done and disabled the text entering in Rad FileExplorer Upload Popup.


Thursday, 3 April 2014

Close the radwindow from childpage without refreshing parentpage through javascript

In parent page design

<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
        <script type="text/javascript">
            function onClientClose(oWnd, args) {
                // get the transferred arguments
                var arg = args.get_argument();
                if (arg == '' || arg == null) {
                }
                else {
                    $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest(arg);
                }
            }
        </script>
    </telerik:RadCodeBlock>
    <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" >
    </telerik:RadAjaxLoadingPanel>
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="panel1">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="panel1" LoadingPanelID="RadAjaxLoadingPanel1"></telerik:AjaxUpdatedControl>
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManager>
<asp:Panel ID="panel1" runat="server">
<asp:Button ID="Button1" runat="server" Text="Button"  OnClick="Button1_Click"/>
 <telerik:RadWindow ID="Example" runat="server" Modal="True"  Title="example" OnClientClose="onClientClose">
        </telerik:RadWindow>
</asp:panel>


In parent page code behind


protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
        {
       //Get Argument from childpage(popup)
            var result = e.Argument;
        }

 protected void Button1_Click(object sender, EventArgs e)
        {
           example.navigateurl="childpage.aspx";
        }


In child page design

<script type="text/javascript">

        // Get Rad Window
        function getRadWindow() {
            var oWindow = null;
            if (window.radWindow)
                oWindow = window.radWindow;
            else if (window.frameElement.radWindow)
                oWindow = window.frameElement.radWindow;
            return oWindow;
        }

     

        function onClientClose(arg) {
            // Pass the arguments from the dialog to the callback function on the main page.   
            getRadWindow().close(arg);
        }

    </script>

In child page code behind

string samplevariable="test";

//Place this code to pass samplevariable to parentpage without refreshing it

Page.ClientScript.RegisterStartupScript(typeof(Page), "CloseScript_" + UniqueID, "onClientClose('" + samplevariable + "');", true);


Thursday, 27 March 2014

Remove items from one list based on another List

Remove items from one list based on second list which contains duplicates or same records in first list


 FirstList.RemoveAll(a => SecondList.Exists(b => b.Id == a.Id));

Remove QueryString from url and Setting the readonly Property as False

 //Remove QueryString  from url and Setting the readonly Property as False

using System.Reflection;

                    PropertyInfo isreadonly = typeof(System.Collections.Specialized.NameValueCollection).GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);
                    isreadonly.SetValue(this.Request.QueryString, false, null);
                    this.Request.QueryString.Remove("Id");

Wednesday, 19 March 2014

Refresh Parent Page and closing the Rad window using Customize Url

We may have scenarios like closing the rad window where the rad window will call different page and refresh the parent page with customized url after task is finished in rad window
In that case

First Add the following java script to the page where Rad window is navigated

 <script type="text/javascript">
        // Get Rad Window
        function getRadWindow() {
            var oWindow = null;
            if (window.radWindow)
                oWindow = window.radWindow;
            else if (window.frameElement.radWindow)
                oWindow = window.frameElement.radWindow;
            return oWindow;
        }

        // Redirect page to url
        function redirectParentPage(url) {
            getRadWindow().BrowserWindow.document.location.href = url;
        }
    </script>

Next in that page code behind file  Add the following logic to respect event handler

//Customized Url
 string url = "";
 Page.ClientScript.RegisterClientScriptBlock(GetType(), "CloseScript", "redirectParentPage('" + url + "')", true);

This is will redirect to the parent page and refresh it.