Validate Checkbox and Checkboxlist in easy way

Posted by Venkat | Labels: , ,

Hi Good Evening Techies.

I saw the post that has been asked number of times ie: how to validate the Checkbox and checkboxlist
so we can validate the Both of this using the Javascript or JQuery , but here I am going to make it much more easy ie: 4guysformula Provides the Control which can added to our toolbox then you can work these similar to the other validation Control

Validation Control for Checkbox and Checkboxlist

Go to the page down - Get the control ie: dll file ie: skmvalidators.dall place the file on Bin Folder of your project then add the dll file to your toolbox. then drag and drop to your aspx page & set some property thats it.

Alternatively Download the file here skmValidators.rar

AjaxHoverMenuExtender with ASP.NET

Posted by Venkat | Labels: ,

Today i am going to discuss, how to use AJAXHoverMenuExtender with ASP.NET. There are javascript available for onmouseover function which shows some text or something like menus. Today I am going to implement the same on serverside by using ajax functionality. There are number of tools available with ajax for our requirement I am going to use AjaxHoverMenuExtender - it show the menus or some text onmouseover of control or image or text.

First Create AjaxEnabled Website - so it automatically include AJAX Controls on your toolbox.

Place the ScriptManager on your page.
 <ajax:ScriptManager ID="ScriptManager1" runat="server">
        </ajax:ScriptManager>

Then Drag the Hyperlink and AjaxHoverMenuExtender on the Design page.
<asp:HyperLink ID="Hyperlink1" runat="server" Text="Session Mode"               NavigateUrl="~/Description.aspx"></asp:HyperLink>

 <ajaxToolkit:HoverMenuExtender ID="hme2" runat="Server" TargetControlID="Hyperlink1"
            PopupControlID="Panel1" PopupPosition="Center" OffsetX="-25" OffsetY="15"
/>

Main Properties of AjaxHoverMenuExtender

TargetControlID - Specify the server ControlID where you going to show the popup text.

PopupControlId -  Specify the ControlD which shows the popup while onmouseover of the

text of link.

PopupPosition - Center , Left , Right .

OffSetX , OffSetY - specify the X and Y position on that page according to the parent
Control.

Now i have to define the PopUp so this will be shown while mouseover.So here I used the panel which contains Datalist inside Where I bind the data from DB.

<asp:Panel ID="Panel1" runat="server" Width="600px">
            <asp:DataList ID="Dtl_Unit" CellPadding="1" CellSpacing="1"
ShowHeader="False" BorderWidth="0px"
                runat="server" DataKeyField="ServicesSubId" DataSourceID="Sqd_Unit" 

RepeatColumns="5">
                <ItemTemplate>
                    <table border="0">
                        <tr>
                            <td>
                                     <asp:HyperLink ID="Hyperlink2"  runat="server" 

NavigateUrl='<%#"Description.aspx?SId="+Eval("sessionmodeID") %>'
Text='<%#Eval("sessionmodeName")%>'></asp:HyperLink>
                            </td>

                        </tr>
                    </table>
                </ItemTemplate>
                <ItemStyle BorderWidth="0px"  />
            </asp:DataList>
            <asp:SqlDataSource ID="Sqd_Unit" runat="server" ConnectionString="<%$ 

ConnectionStrings:ConnectionString %>"
                SelectCommand="SELECT [sessionmodeID], [sessionmodeName] FROM 

[SessionTable]">
            </asp:SqlDataSource>
        </asp:Panel>

Output:

Invalid postback or callback argument. Event validation is enabled using in configuration or <%@ Page EnableEventValidation="true" %> in a page.

Posted by Venkat | Labels:

When i faced this issue

Invalid postback or callback argument. Event validation is enabled using in configuration or <%@ Page EnableEventValidation="true" %> in a page.

I fixed it by putting my Databind  code ie: Gridview Databind code in the Page_Load event in a !Page.IsPostBack block

Solution:

if(!IsPostback)

{
//Bind the Gridview Databind
}

Show Online Username

Posted by Venkat | Labels: ,

Now I am going to discuss, how to show who is online on my site - showing the Online Username , We know already how to show the Number of users online using Application Variables on Global.asax file.

But here i am going to show the online usersName.So, In my case i used Login Control and implement SecurityMembershipProvider and Roleprovider.Whenever the user Login - the LastAcivityDate field in the Users table will be updated with Current DateTime. The code has written on the SecurityMembership Provider.

When the user navigating the page ie: OnPostback the page - LastActivityDate will be Updated automatically, this will make sure the userName was active on the site.

if i say Simply it will show the online Username for the last 15 Minutes.

Code-behind:

// here getting the 15 Minutes, if you want the time difference you use it here..ie: to // update the your page at regular intervals.
TimeSpan onlineSpan = new TimeSpan(0,15,0);
// here i minus the 15 Minutes from the Current Datetime and pass it as a parameter
            DateTime compareTime = DateTime.Now.Subtract(onlineSpan);
            using (SqlCommand cmd = new SqlCommand("SELECT users.username from users where users.LastActivityDate > @CompareDate ", con))
{
            cmd.Parameters.Add("@CompareDate", SqlDbType.DateTime).Value = compareTime;
            using(SqlDataAdapter adap = new SqlDataAdapter())
            {
            adap.SelectCommand = cmd;
            }

}          
            DataTable dt = new DataTable();
            adap.Fill(dt);
            OnlineuserList_GridView.DataSource = dt;
            OnlineuserList_GridView.DataBind();

Creating Dynamic Controls

Posted by Venkat | Labels: ,

Good Day to All.

When i came across one issue ie: while creating a dynamic control ie: Dropdownlist on my case , if i choose some value on Dropdownlist onClick of the button i want the selected value that has to be stored in Database. But on postback the Control is not visible.

so here i am going discuss how to create a dynamic control , onpostback how to retain  its value. its just simple ie: Re-Create the Dynamic Control OnPostback so it will retain the selectedvalue.

HTML Code

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns ="True" OnRowDataBound="GridView1_RowDataBound">
        <Columns >
        <asp:TemplateField >
        <ItemTemplate >
        <table >
        <tr>
        <td>
            <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
        </td>
        <br />
        <td>
         <asp:PlaceHolder ID="PlaceHolder2" runat="server"></asp:PlaceHolder>
        </td>
        <br />
        
        <td>
         <asp:PlaceHolder ID="PlaceHolder3" runat="server"></asp:PlaceHolder>
        </td>
        </tr>
        </table>
        </ItemTemplate>
        </asp:TemplateField>
        </Columns>
        </asp:GridView>

   <asp:Button ID="Button1" runat="server" Text="Get Value" OnClick="Button1_Click"  />


So here in Gridview i am going to create a dynamic control on page_Load.
so i am placing the Placeholder to hold the Control. Its a Container for that controls.

Code-Behind

private void BindArraylist()
    {
        List<string> bindG = new List<string>() ;
        bindG .Add ("Mani");
        bindG .Add ("Shivaram");
        bindG .Add ("Gopi");
        bindG.Add ("Venu");
        GridView1 .DataSource = bindG ;
        GridView1 .DataBind ();
     
    }
//page_OnLoad

 if (!Page.IsPostBack)
        {
            
            BindArraylist();
        }

//On Row databound we are creation a dynamic dropdownlist, by adding some items and added to the Placholder Container

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            PlaceHolder p1 = new PlaceHolder();
            PlaceHolder p2 = new PlaceHolder();
            PlaceHolder p3 = new PlaceHolder();

            p1 = (PlaceHolder)e.Row.FindControl("PlaceHolder1");
            p2 = (PlaceHolder)e.Row.FindControl("PlaceHolder2");
            p3 = (PlaceHolder)e.Row.FindControl("PlaceHolder3");

            DropDownList d1 = new DropDownList();
            DropDownList d2 = new DropDownList();
            DropDownList d3 = new DropDownList();
            d1.ID = "d1";
            d1.Items.Add("123");
            d1.Items.Add("00");
            d1.Items.Add("dfgdf");
            d2.ID = "d2";
            d2.Items.Add("34f");
            d2.Items.Add("h456");
            d2.Items.Add("ngfy3e35");
            d3.ID = "d3";
            d3.Items.Add("3478");
            d3.Items.Add("0fghdj0");
            d3.Items.Add("2d43g5gh5");

            p1.Controls.Add(d1);
            p2.Controls.Add(d2);
            p3.Controls.Add(d3);
      }
}

Write the code onButton_Click to get the selected value, before that i am calling the bindArraylist method again to re-Create dropdownlist control.


protected void Button1_Click(object sender, EventArgs e)
    {
        BindArraylist();
        foreach (GridViewRow row in GridView1.Rows)
        {
        
            DropDownList d1 = new DropDownList();
            DropDownList d2 = new DropDownList();
            DropDownList d3 = new DropDownList();

            d1 = (DropDownList)row.FindControl("d1");
            d2 = (DropDownList)row.FindControl("d2");
            d3 = (DropDownList)row.FindControl("d3");
            //txtValues.Add(d1.SelectedIndex.ToString());
  
            Response.Write(d1.SelectedValue.ToString() + "-" + d2.SelectedValue.ToString() + "-" + d3.SelectedValue.ToString());
        }
    }

Sys.WebForms.PageRequestManagerServerErrorException

Posted by Venkat | Labels:

When i was worked with Ajax with timer Control i have the task ie: updating the some control inside the UpdatePanel ie: I am refreshing or call the method  at regular intervals. That time i got this error

 Sys.WebForms.PageRequestManagerServerErrorException ... 404 not found

This error occurs only when the page is idle for 1 min or more than 1 min, so i googled to get the solution for this issue. there is number of solution available according the problem and at which situation you are using.

Solution: 

< asp:ScriptManager ID="ScriptManager1" runat="server"   EnablePartialRendering="false" />

Creating Windows Service using ASP.NET

Posted by Venkat | Labels: , ,

Good morning to All

Now I am going to explain how to Create a windows Service in asp.net

What is the purpose of Creating windows service in asp.net ?

For ex: if you have the task of Sending birthday email to the members Automatically or  you are going to do some manipulation on particular day or do some manipulation on Consecutive intervals so at this situation you can go for Window service or even you can do birth email process through Sql Job Scheduling.

Now see how to create a simple service.

Choose Create Project -> VisualC# -> Windows -> Windows Service

Fig 1:


So once you give the windowService Name it will show this - by default the serviceName is Service1 here i am changed to TimerService.

Fig 2:



Then Right Click on Service - Select -> Add Installer

Fig 3:


Then the ProjectInstaller window show two Services like serviceProcessIntaller1 , serviceInstaller1 so you have to change some Properties for this service

Properties of serviceProcessIntaller1

Account - > there are some 4 types of account are there as per the requirement

1) LocalService - for only particular computer

2) Network Service - to access resource on remote side ie: server

3) Local System - to works on local System

4) User - Based on User credentials

For Brief Description Check it :

http://technet.microsoft.com/en-us/library/ms143504.aspx

Fig 4:


Properties of serviceInstaller1

StartType :

1) Automatic

2) Manual

3) Disabled

You have to specify whether you are going to start this Service Manually or Automatically or Disabled the Service.then give the name for ServiceName Property , And give some Name for DisplayName property - this name will be displayed on your servicelist to identify your Service.

Fig 5:


Now we going to write the code for Service on Service1.cs

by default it has OnStart and OnStop Event - so this event occurs when service start and stop.

using System.Timers;

Add timer to do some manipulation on particular intervals

  //Initialize the timer
Timer timer = new Timer();

so here is the code - what i am doing is create a method called AddToFile where i am adding the string to the file ie: on C Directory if the file is present it will write it on  or it will create a new file with the specified name and write the content on that file.

And onStart Event i am creating the Timer Elapsed event which called at every 1 minute so their i am adding another entry on that event.

Finally onStop Event i set the timer enabled = false and made last entry ie: Service stopped.

protected override void OnStart(string[] args)
        {
            // TODO: Add code here to start your service.
            //add line to the file
            AddToFile("Make starting service");

            //ad 1: handle Elapsed event
            timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);

            //ad 2: set interval to 1 minute (= 60,000 milliseconds)
            timer.Interval = 60000;

            //ad 3: enabling the timer
            timer.Enabled = true;
        }

  protected override void OnStop()
        {
            // TODO: Add code here to perform any tear-down necessary to stop your service.
            timer.Enabled = false;
            AddToFile("Make stopping service");
        }

  private void AddToFile(string contents)
        {

            //set up a filestream
            FileStream fs = new FileStream(@"c:\timelog.txt", FileMode.OpenOrCreate, FileAccess.Write);

            //set up a streamwriter for adding text

            StreamWriter sw = new StreamWriter(fs);

            //find the end of the underlying filestream

            sw.BaseStream.Seek(0, SeekOrigin.End);

            //add the text
            sw.WriteLine(contents);
            //add the text to the underlying filestream

            sw.Flush();
            //close the writer
            sw.Close();
        }
        private void OnElapsedTime(object source, ElapsedEventArgs e)
        {
            AddToFile("Make Another entry");
        }

so once you written the code just press F5 to run it show this dialog

Fig 6:

so you can start the service to start the service you have to install installutil.exe through commandline.

so go to Command Prompt on this Path.

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

From here you have to install the service , once you compile the project exe file is created on bin folder.

here is the step to install the Service

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727: InstallUtil "F:\WindowsService1\bin\Debug\WindowsService1.exe"

so if you press enter. Service will be installed.

To UnInstall The service follow this line

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\: IntsallUtil  /u"F:\WindowsService1\bin\Debug\WindowsService1.exe"

Once the Serice is installed it will be available on your Service list To check this follow this one

Start -> Control Panel -> Administrative Tools -> Services -> then find the Service as you given while creating the windowsService ie: DisplayName : TimerService

Fig7:



so if you set the Startup Type - Automatic - the service started when the System boots, you can also start the service Manually Right Click on the Service -> start. to start the service.

After the start the service check the C:\ Directory - you can check the file with the entry.

Happy Coding.


Enhanced by Zemanta

Compress and Cache the CSS and JS file using ASP.NET

Posted by Venkat | Labels: ,

HTTPCombiner
Credit goes to : http://code.msdn.microsoft.com/HttpCombiner

In my last article i have discussed how to compress .aspx pages. Now we are going to see how to compress the Javascript and CSS file.

Once the JS and CSS file is requested to the server and has been Cached. On next time You get it from Cache.If i have 10 Javascript file and 10 Stylesheets , every time when you request the page - each time it requested the server for JS and CSS file ie: 10 request to server for CSS and 10 request to Server for JS, to avoid the issue we have to combine all the CSS as one file and all JS as one file. Therefore only one request is sent to the server to get the JS file so totally two request has been sent to the server one for JS and CSS.

There is some JS and CSS compressor tools available for free, these tools will compress or minify your JS or CSS file this is the one waybut we have to do manually.

If you want to compress the file at runtime, here i am using HTTPCombiner to make the all the CSS as 1 CSS and all the JS and 1 JS file.

It has one file ie: HTTPCombiner.ashx - to Compress the CSS and JS file.Place the file on your project.
Add these two line to include all your Css and Js file on your appSettings tag on your web.config, You can get the file name using key part of the appSettings.

<add key="Set_Css" 

value="App_Themes/Default/Css1.css,App_Themes/Default/Css2.css"/>
  <add key="Set_Javascript" 
value="Javascripts/Js1.js,Javascripts/Js2.js,

http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"/>

After that you have to give the cSS and JS path on the Page1.aspx.

<link   type="text/css" 
            rel="Stylesheet" 
            href="HttpCombiner.ashx?s=Set_Css&t=text/css&v=1" />

    <script     
        type="text/javascript" 
        src="HttpCombiner.ashx?s=Set_Javascript&t=type/javascript&v=2" >
    </script>

Thats all, now you upload the file to server and check the JS,CSS file compressed (check the file length before and after applying this technique) using Fiddler tool or any other tools.
These are some tools to check Page response time.

http://www.aptimize.com/
http://websiteoptimization.com/services/analyze/
http://www.fiddler2.com/

Compressing Asp.Net Pages

Posted by Venkat | Labels: ,

Good Evening to All.
Here I am going to cover how to compress the .aspx pages.
so there are no.of ways to compress the pages in asp.net
1) using IIS.
2) using Code ie: through HTTPCompress.dll i got the source code from codeproject.com.
so i am going to share with you.
There are two type of Compression ie: Deflate , GZIP. here i am going to use GZIP compression to compress the asp.net pages.
First Place the DLL file ie::HTTPCompress.dll to the Bin folder of your project.
Then you have to include some tag on web.config file

<configsections>
  <sectiongroup name="Flanders">
   <section name="HttpCompress" type="Flanders.Library.Modules.HttpCompress.Configuration, HttpCompress">
  </section>
 </sectiongroup>
<flanders>
  <httpcompress compressiontype="GZip">
   <excludedpaths>
    <add path="NoCompression.aspx">
   </add>
   <excludedmimetypes>
    <add mime="image/jpeg">
   </add>
  </excludedmimetypes></excludedpaths>
</httpcompress>
</flanders>
</configsections>
Here i am using GZiP Compression technique. there are two more inner Tags ie: ExcludePaths, ExcludeMimeTypes.
ExcludePaths - It includes the Page Name that don't want to compress.
ExcludeMimeTypes - Include the mime types that dont want to compress the images..
By default images are compressed so no need to compress the image while using compression so our ExcludedMimeTypes tag should be like this.

<excludedmimetypes>
  <add mime="image/jpeg">
  <add mime="image/jpg">
  <add mime="image/png">
  <add mime="image/gif">
</add>
</add>
</add>
</add>
</excludedmimetypes>
Finally we need to add the httpModules

<httpmodules>
   <add> name="HttpCompressModule" type="Flanders.Library.Modules.HttpCompress.HttpModule,HttpCompress"/>
 </add>
</httpmodules>
Download Source Code

Credit goes to :
Ref: http://www.codeproject.com/KB/aspnet/HttpCompress.aspx

Postback not works when using HTTPCompression

Posted by Venkat | Labels: , ,

Some members asked this question on forums. Here is the Solution to overcome this issue.

When i am going to compress the .aspx pages using HTTPCompression, the postback will not works. Because it also compressing the Scripresource.axd, webresource.axd file.

To make the postback works in your project you do not compress the above two files, by adding these code.

Solution:

........,

<httpcompress compressiontype="GZip">
 <excludedpaths>
 <add path="scriptresource.axd">
 <add path="webresource.axd">
</add>
</add>
</excludedpaths></httpcompress>


And one more thing don't compress the images like jpg, gif, jpeg etc.. because its already compressed one. if you compress the image it will degrade the performance. you should the exclude the image from compression.

Solution:

..,
<excludedmimetypes>
 <add mime="image/jpeg">
 </add>
 </excludedmimetypes>

Thanks to all.

PayOffers.in