Thursday, May 5, 2016

Check all functionality using Javascript in Gridview

This is a small article that helps you to implement popular functionality of check all, it helps you to put checkbox in gridview view header and on click of that checkbox, all check boxes will checked at once

We have to developed a customized outlook a small interface that take care of all incoming mails. This interface is also used to delete the mails if not necessary.
for that use gridview to show all incoming mails and a facility in the form of checkbox to delete them either one by one or all at once. Now a list of problems come up
- How to add a checkbox in gridview header ?
- How check all columns on single click ?
- Can we do it on client side so we can save additional load on server execuion ?

In this article we go through the concept adding checkbox at gridview header, check/uncheck all checkboxes with the help of javascript on client side
here we go to collect cooking material. This simple demo is ready to use and handy in many codes.

What we need to make it ?
we need a gridview, A auto generated column of checkbox, gridview header temaple to keep checkbox in header and finally a javascript to work on checkboxes

Code in action
- Create a new ASP.NET website
- on default.aspx, add a gridview from toolbox and add asp:TemplateField for checkbox
- Set HeaderStyle, ItemStyle, Row style as desired
- Now we have design our gridview successfully, but how to add checkbox in gridview header ?
- it's simple, add checkbox in under , it will generate a checkbox in gridview header.

Header template

           <asp:CheckBox ID="chkHeaderSelect" runat="server" onclick="return callCheckAll()" />

I have put a code for you to copy it directly, copy the code and add it in ASPX page.
//paste the code in ASPX page
 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true" BackColor="White"
        BorderColor="#336699" BorderStyle="Solid" BorderWidth="1px" Font-Size="10" 
        GridLines="Both" Width="80%" HorizontalAlign="Center">
            <asp:TemplateField HeaderText="Select" ItemStyle-HorizontalAlign="Center">
                    <asp:CheckBox ID="chkSelect" runat="server" />
                <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="20%" />
                <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="20%" />
                    <asp:CheckBox ID="chkHeaderSelect" runat="server" onclick="return callCheckAll()" />
        <RowStyle HorizontalAlign="Center" />
        <HeaderStyle BackColor="#336699" ForeColor="White" Height="20" />

now, use the javascript to work "checkAll" functionality
see below script snippet

//copy following code in <head> section
  <script language="Javascript" type="text/javascript">
        function callCheckAll() 
          var checkList = GridView1.getElementsByTagName("input");
      var bChecked = false;
      if (checkList[0].checked)
           bChecked = true;
     for (var i = 0; i < checkList.length; i++) 
         //The First check box is Header Checkbox
             var headerCheck = checkList[0];
             var checked = true;
             if (checkList[i].type == "checkbox" && checkList[i] != headerCheck)
        checkList[i].checked = bChecked;

now fill the gridview and Ready for the effect

//Add this code on page load, to fill gridview using Datatable
         DataTable dt = new DataTable();

        //Put some columns in it. 
        dt.Columns.Add(new DataColumn("No", typeof(int)));
        dt.Columns.Add(new DataColumn("Name", typeof(string)));
        dt.Columns.Add(new DataColumn("Address", typeof(string)));

        for (int iCount = 0; iCount < 10; iCount++)
            // Create the record 
            DataRow dr = dt.NewRow();
            dr["No"] = iCount + 1;// i; 
            dr["Name"] = "DemoName" + iCount;//xmn2[1].InnerText;  //value from textbox on screen 
            dr["Address"] = "Address" + iCount;//xmn4[1].InnerText; //value from textbox on screen 

        //Bind the GridView to the data in the data table for display. 
        this.GridView1.Visible = true;
        GridView1.DataSource = dt;
This simple snippet/article really helpful to you to implement checkAll functionality.

Suggestion are most welcome.

Read More » Rate this posting:

Friday, April 22, 2016

Tricky SQL Server Interview Question and answers

Are you preparing for a SQL server interview? want some tricky questions and answers that will give you break through ? Then you are at the correct place. Here i have some bunch of tricky SQL Server interview questions and answers that will really help you to go through the interview

1.With is the Sixth normal form in SQL server? - Ohhh...You may think that, i have heard about first to forth only but what is this SIXTH? Friends, do not try to impress the interviewer just skip this question.
Sixth normal form does exist but use it when you want a relational system in conjunction with time. At this moment SQL Server does not support it directly.

2. In which Files does SQL Server Actually Store Data? - SQL server has 2 data files associated with it
1. MDF : Which is actual data file storage
2. LDF : (Log data files) which stores transaction log

3. Do you know How many locks are exist in SQL Server ? - We have these many locks exist here, see below
1. Intent
2. Shared
3. Update
4. Exclusive
5. Schema
6. Bulk Update

4.What is SQL Profiler?- It is a tool that allows administrator to monitor different events and transaction of SQL server instance, You can capture and save data about each event to a file or SQL Server table to analyze later
it is not available with EXPRESS edition

5. Can i insert into a table having just one IDENTITY column?- Yes you can, Use following Query
6. How to drop primary key from a column using Query
- See below query to drop primary key constraint
7. What is the difference between a DDL trigger and a DML trigger?- DDL commands are always deal with table structures, these command can update/modify table structure (CREATE, ALTER, DROP)
DMS commands are always deal with data/records not with table structure (INSERT, UPDATE, DELETE)

8. What the difference between UNION and UNIONALL?
- Union will remove the duplicate rows from the result set while UNIONALL does not remove them. So to avoid data redundancy you need to use UNION

9. What is the clustered and a non-clustered index?
- Clustered index is the physical index that reorders the way records in the table are physically stored, In non-clustered index logical order of the index does not match the physical stored order of the rows on disk

10. What's the difference between a primary key and a unique key?
- Both keys are not allow duplicate entries but primary key create a cluster index where as unique key create a non clustered index. Secondly primary key doesn't allow NULLs, but unique key allows one NULL only.
11. How to change the data type of a column- The ALTER TABLE statement is used to add, delete, or modify columns in an existing table.
Here is the query to change column datataype
ALTER TABLE table_name ALTER COLUMN column_name data type

12. How to check the version of SQL server and operating system?
- With the help of the following query we can get it
SELECT SERVERPROPERTY ('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition').

13. What is CHECK Constraint?
- CHECK Constraint used to limit the values that can be placed in a column

14. How can you delete duplicate records in a table where there is no primary key?
- You can take Use of the SET ROWCOUNT command. Here if you had 2 duplicate rows you would issue SET ROWCOUNT 1, then your DELETE command then SET ROWCOUNT 0.
15. What is NOT NULL Constraint?- This constraint force the column to not accept NULL values

16. How to copy data from one table to another table?
- With the help of 'INSERT INTO SELECT' or 'SELECT INTO' queries you can copy data from a datatable to another

17. What is PIVOT
- To automatically sort, count, and total the data stored in one table we use PIVOT. It will also rotate table as rows to columns and vice versa

18. What are DBCC commands?
- These are the Database Consistency Checker commands; They will Check disk allocation consistency, Display information about recent transactions.
19. Find the 3rd MAX salary in the emp table
Select distinct sal from emp e1 where 3 = (select count(distinct sal) from emp e2 where e1.sal <= e2.sal);
20. What is the difference between Trigger and Stored Procedure?- Triggers cannot be called directly they need to associated with different quires

Suggestion/Queries always welcome

Happy Interview
- Prasad
Read More » Rate this posting:

Monday, April 18, 2016

JQuery Interview Questions

Are you preparing a Jquery interview? Then read this blog to know more about JQuery, here I have given some frequently asked JQuery Interview Questions and answers, which will surely help you to crack your interview

1. What is JQuery?
- Most simple but frequently asked question, JQuery is a library designed by javascript, it is light weight, it is simple than JavaScript, it has many inbuilt methods and it can handle events, Html DOM and Ajax

2. What is $ in JQuery?
- Simple it is a function selector or a JQuery object, some says $ is a shortcut to the jQuery function

3. Can i use Javascript and JQuery on same page?
- Yes, we can use Javascript and JQuery on same page, for the use of JQuery we need to add .JS library reference to the page, where as for JavaScript for separate library reference is needed.

4. How to use JQuery?
 - JQuery can be easily called with the help of its referenced libraries, first we need to give JQuery library reference to page and then call it using '$' sign
see below snippet, we can write JQuery in HEAD section
//here is JQuery reference
<script src=""></script>
 alert("Message on on page load")

above snippet shows, we can write JQuery in HEAD section and above code will call on Page load
5. What are the features of JQuery?
- JQuery is highly intractable, it has following features
  • Rich Inbuilt methods that easily interact with controls
  • Events handling
  • Special widgets
  • Animation and effect supports
  • Good alternative to flash
  • Strong AJAX support
  • HTML DOM Manipulation
  • Can Bind Multiple Event Handlers in single method
6. What is JQuery UI?
- JQuery UI is also a JavaScript library, as name suggest it is a user interface portal that is built using JavaScript and can be easily added in new and existing applications
it contains interactions, widgets and effects, we can build UI rich and highly interactive applications using it.

7. Which are the performance responsive selector?
- The elements which are selected using ID are the performance responsive selector as the ID is unique throughout the rendered page

8. JQuery or JavaScript which is quicker in execution?
- Native JavaScript is always faster in operation than JQuery cause JQuery is a JavaScript library,
e.g. Through we call '$(#EmpName)' in JQuery, it internally convert the syntax to javascript's 'getElementById("EmpName")' method and then execute in browser

9. What is has() in JQuery? - has() is selection filter, it checks Check if an Element 'Has Something', means if i want to traverse my HTML file and check if DIV has list tag (OL) then we can check with has(), see below snippet
above code will select all element with 'ol'
10. Can JQuery parse XML?
- No, currently JQuery supports only HTML DOM parser

11. Can JQuery Run on MAC or Linux instead of Windows?
- JQuery support cross browser and cross platform compatibility hence it fluidly runs on Windows/MAC/Linux with all major browser compatibility (IE/Chrome/FF/NN/Safari)

12. When to use JQuery?
- Basically JQuery can be use more than validation part, Alone JavaScript can be able to handle validation part, you can us JQuery when you want rich user interface with client side events, when you want to remove flash plug inns and put some animations

13. Which effects has inbuilt supported by JQuery?
- Hide, Show, Toggle, SlideDown, SlideToggle, SlideUp, FadeIn, FadeOut, Animate, FadeTo, FadeToggle, has inbuilt support by JQuery

14. Can we replace any character or variable instead of $ in JQuery?
- Yes,
we can replace $ by using no Conflict () method, see below snippet to replace $
var szDoll = $.noConflict()

15. Tell me something about JQuery debugging? JQuery can be debugged easily using following ways
  1. using debugger; keyword : Add debugger; keyword just before the line where you want to debug
  2. using Breakpoint : If you have visual studio then you can place breakpoint on line where you want to start debugging
  3. Placing a Alert box : It is traditional way, if you don't have visual studio, you need to place a alert boxes in lines from where you want start debugging
16. What is Method chaining in JQuery?
 - As name suggest it is the chain of methods executed in sequence, it is executed in single statement, see following snippet
$("#div1").text("DIV 1");
$("#div1").css("color", "red");

//instead we can write
$("#div1").text("DIV 1");
          .css("color", "red");

17. How to redirect a page using JQuery?
- There is no specific JQuery syntax to redirect a page, you can use Javascript syntax instead, see below snippet
window.location.href = http://test/default.aspx;

18. How to refresh a page using JQuery?
- you can use location.reload() method, to refresh page, see below snippet

19. How to check if element is hidden or visible using JQuery?
- You can use 'is()' method for 'display' or 'hidden' property, it returns boolean variable, see below snippet

20. What is difference in return false and preventDefault in JQuery?
- when we call return false, it first call e.preventDefault and then call e.stopPropagation which stop execution, where as e.preventDefault will prevent event to be bubbling up.

21. What is difference between "#" and "." selector in JQuery? - Basically JQuery uses following notation as selector
  1. $("div") : It is global selector which Selects all DIV element in page
  2. $("#btnSubmit") : # is a specific ID selector which select element having ID as 'btnSubmit'
  3. $(".classBold") : . is a specific Class selector which select element having class as 'classBold'
22. Which are the most common JQuery evens?
  • click () : Raise when any element is clicked
  • dblclick() : Raise when any element is double clicked
  • mouseenter() : Raise when mouse pointer enter in element
  • mouseleave() : Raise when mouse pointer leave an element
  • mousedown() : Raise when mouse pointer clicked down on element
  • mouseup() : Raise when mouse pointer clicked and release on element
  • focus() : Raise when element got focus
Rome was not built in a day, still more to come, i will cover some more complex Q&A in Next version of this article, till then you can enjoy this most commonly asked question

Suggestion and queries are most welcome

Thanking you
Read More » Rate this posting:

Wednesday, November 25, 2015

ASP.NET MVC Do's and Dont's/Best practices


ASP.NET MVC (Model-View-Controller architectural pattern) is getting popular day by day, due to Separation of code, extensive templates, data-binding, test-driven development (TDD), Scaffolding and no view state like features, it has REST and SEO support nature. it is really an plugged and extensible framework. We get complete control over HTML with MVC support.  But before going to code on ASP.NET MVC we should take care of some Do's and Dont's or best practices. Here i am explaining some Do's and Don'ts of ASP.NET MVC code
         Many developers/organizations thinking of migrating their exiting application to ASP.NET MVC, This article will help them to understand code facts

Do's and Dont's/Best Practices

1. Business logic should be the part of Model only
Before start code on MVC we should make understand that Business logic should be reside in Model only, it will add your security and code duplication can be avoided. The view load faster as there is no business present in view.

2.  Use only specific view engine
View engines are used to create HTML markup from your view, it is the combination of HTML and programming code, ASP.NET has its own engine where as ASP.NET MVC has its razor engine. You should only use your specified view engine, it will increase application performance, see below snippet
protected void Application_Start()
    ViewEngines.Engines.Clear(); //clear all engines
    ViewEngines.Engines.Add(new RazorViewEngine());
3. Create separate assembly for Model
if the application is large and complex then make separate assembly for Model to avoid An unfortunate mishap.  Basically Model should contain business logic, Validation part, session maintenance and data logic part.

4. HTML and data access part should be done from VIEW only
As we know VIEW is the presenter part and it should be very flexible. VIEW should not contains any business logic and session maintenance, use ViewData to access data in View.

5.  Business logic and data access should not exist in ControllerViewData
Controller should be only responsible for calling model, Prepare view, return view, redirect to action etc

6. Delete Demo code from application when you create it
Delete AccountController and all other auto created code from application it will slow down the performance

7. Disable request validation
Request validation validate the request submitted to server and avoid the potential dangerous characters, but it will also block the contents to post HTML markup tags to the server, so disable it, with the help of ValidateInput we can do it, see below snippet
public ActionResult Create([Bind(Exclude="Name")]TestEmployee clsEmp)
//code goes here
8. Master view model may be use for Uniformness
In ASP.NET master pages are used to maintain uniformness in look and feel, same way in ASP.NET MVC we use master view for it.

9.  Data Annotations can be used for server side validation
Use System.ComponentModel.DataAnnotations namespace for server side validation, just use it in model with attribute, see snippet
Public class GetAddress
    [Required(ErrorMessage="Address is mandatory")]
    public string Address { get; set; }
10. Use extension methods
Extension method help us to simplify LINQ queries and improve application performance, these methods are the static methods and access with this keyword.

11. Remove un-necessary folders and references
When you start creating new ASP.NET MVC application, visual studio does create lot of un-necessary folders and references that are not useful, we can remove them to avoid additional overhead on application

12. Do Bundling and Minifying CSS Files
Bundling and Minifying is the process of minimizing the size of referenced file like .JS, .JSON, .CSS we can reduce the size of such files which will ultimately boost the application performance, in Bundling we merge all CSS in one file and same done for .JS and .JSON file in Minification we remove extra spaces and enters from file and reduce file size

13. For each view there should be a view model
Do you have view ? if yes then create ViewModel. it should used only for data binding and may not contain any presenter code. ViewModel is essential when we want to show some data in different format, in such case view only responsible for present and ViewModel does the job of data transformation

14. Design Routing properly not URL re-writing
URL routing is very much different than URL re-writing, may developers consider them as unique thing. URL routing does not create new URL for old URL but it maps resources with route

15.  Use ViewData and ViewBag for large data storage
If you want to work with lage data, spread sheets, dashboards or volume data sources then ViewData is good option, both views and controllers can easily access ViewData and ViewBag

16. For current and the subsequent requests use TempData
TempData is very short-lived instance, it should use only For current and the subsequent requests.

17. Use Glimpse, fidder, F-12 like package to monitor and improve performance of ASP.NET MVC
Glimpse NuGet package provide detail diagnostic information of ASP.NET apps, where as fidder, F-12 shows you client side activities, more information can be found on Here

18.  Deploy code in Release mode
Code with Release is more compressed than debug mode as it does not conain .pdb file so less memory is utilized by it

19. Remove unnessary HTTP headers
Remove X-AspNetMvc version from global.asax.cs as it will not provide no direct benifit and un-necessarily use small amount of bandwidth, see below snippet
MvcHandler.DisableMvcResponseHeader = true;
20. Use CDN (Content Delivery Networks)
CDN is helping you to download your supportive things (like required .JS, .CSS, .JSON files) from nearest location/server, so travelling time of resources from one location to another will save significantly.

21. Use validationSummary to show all validations in one snap
see below method to use to show all validation in one snap
<%= Html.ValidationSummary() %>
22. Razor is recommended
We know ASP.NET MVC support multiple engines but Razor is recommended by Microsoft as it is light weight and it has very simple syntax

23. Do you want some repetitive UI to be display on each page ? use Partial view
Partial view is like a user control in classic ASP.NET, you can use them if you want to show piece of UI on each page

24. If you are not using bundles and WebAPI then simple remove their associated files
Go to App_start directory and remove BundleConfig file, now go to Application_Start method, in Global.asax.cs and remove the line BundleConfig.RegisterBundles, same thing you can do for WebApiConfig

This is not a detail level document, this document at least need a basic knowledge of ASP.NET MVC, i will cover more detail documentation in next version of this document till then enjoy this stuff

Suggestion and Queries are always welcome

Read More » Rate this posting:

Monday, October 26, 2015

A potentially dangerous Request.Form value was detected from the client occurred in ASP.NET 4.0


Problem :
         If you are using ASP.NET 4.0 and  you tried to enter some non-encoded HTML content/text like "( )&< > " in Textbox then browser throws "A potentially dangerous Request.Form value was detected from the client" exception

Cause :
        ASP.Net By default validates all input controls for potentially unsafe contents and you entered text is non-encoded HTML content which is like mark-up text, Thus it disallows such content by throwing the above Exception. By default it is recommended to allow this check to happen on each postback

Resolution :
        There are following resolution for this error
1. In many cases if you want to all such mark-up text to any particular page then you can take use of page directive and make 'ValidateRequest '  to false in page directive
see below snippet
<%@ Page Language="C#" AutoEventWireup="true" ValidateRequest = "false" %>

2. If you want to disable this check throughout your Web Application you’ll need to set it false in your web.config section, see below snippet
      <pages validateRequest="false" />

3. You can allow mark-up as input for specific pages instead of the whole site by putting it all in a <location> element. This will make sure all your other pages are safe, see below web.config file
<location path="Code/.aspx">
      <pages validateRequest="false" />
Above snippet will take care of your all .aspx pages inside Code folder

4. If you are using ASP.NET 4.0 then above all solutions will not help you alone, you need to take help of more settings, you need to keep your requestValidationMode to 2.0, see below web.config snippet
  <location path="Code/.aspx">
      <pages validateRequest="false" />
      <httpRuntime requestValidationMode="2.0" />

Just re-start your IIS and your problem is resolved !!!
Read More » Rate this posting:

Wednesday, March 4, 2015

HTTP Error 404.17 : The requested content appears to be script and will not be served by the static file handler

You may got error while browsing your ASP.NET website, which reads  "HTTP Error 404.17 : The requested content appears to be script and will not be served by the static file handler "

Please see below error snap

Probable causes:

 There are many causes behind this problem
1.  HTTP Handler configured to handle the request has certain preconditions set, but its Application pool does not meet some or all of these preconditions, in simple words Application pool's .NET framework is not set properly to the application in which it is compiled (If my application developed in 4.5 and I am attaching application pool with framework 2.0)

2. If my application is migrated from IIS 6 then My Application pool should running in Classic Mode, with enable 32 bit mode options

3. Required .NET framework has restriction in 'ISAPI and CGI restrictions' in IIS

Solutions :

Problem can be resolved by following steps
1. Open IIS manager (Go to start - Run - type 'INETMGR')
2. Select the Server Name (System Name)
3. Select ISAPI and CGI restrictions in right side pane
4. Allow the Not Allowed restrictions for required framework
5. If your required framework will not exist in ISAPI and CGI restrictions  then you need to re-registered framework with following command
see below snippet, to know how to allow ISAPI and CGI restrictions 

6. Go to Start - Run put following command in Run window

C:\Windows\Microsoft.NET\Framework\v4.0.30319 \aspnet_regiis -I

see below snippet

Here I have given example for .NET Framework 4.0 you can use same command for any .NET framework.

7. Set required .NET version in application pool
8. Enable '32-Bit Applications' in application pool
9. Restart IIS

That all, Now try to browse the same website, we have resolved the bug. 
Read More » Rate this posting:

Monday, August 11, 2014

Protect word file using C# : Word automation step by step

     Security is the Most heard and most important 'keyword' in IT industry, Everyone want their documents play a secure travel, should not attack by spam or any intruder. Really, security is the main concern in now world, we can make word file secure by using password protection.
word security

What is our aim:
       protect word file using C# word automation

What we need:
      C#, Interop libraries

What are the different security can be assigned to word file:
         There are multiple types security we can assign to word file
1. Read-only protection
2. Comment only protection
3. Track revision protection

Read Only protection:
It Allow read-only access to the document.

Comment only protection:
It allows Allow only comments to be added to the document.

Track revision protection:
It Allow only revisions to be made to existing content.

Lets code it, (Protect word file):
To protect word file programmatically we need to add reference of interop assemblies in our code, I have explained it in my previous article you can check here
checkout below code snippet to protect file as 'ReadOnly'
         object objMiss = System.Reflection.Missing.Value;  
         object fileToOpen = Application.StartupPath + "\\test.doc";  
         object szPassword = "Pass";  
         object bFalse = false;  
         object bTrue = true;  
         //Start Word and create a new document.  
         objApp = new Word.Application();  
         objDoc = objApp.Documents.Open(ref fileToOpen, ref objMiss, ref objMiss, ref objMiss, ref objMiss,  
                         ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss,  
                         ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss);  
         if (objDoc.ProtectionType == Word.WdProtectionType.wdNoProtection)  
           objDoc.Protect(Word.WdProtectionType.wdAllowOnlyReading, ref bFalse, ref szPassword, ref bFalse, ref bTrue);  
           MessageBox.Show("Word document Protected successfully (for Read only)!", "Word Protect", MessageBoxButtons.OK, MessageBoxIcon.Information);  
           MessageBox.Show("Word document is already protected !", "Word Protect", MessageBoxButtons.OK, MessageBoxIcon.Information);  

In above code snippet we have used method  Protect of document class and pass 'wdAllowOnlyReading' enumeration and just save document with password. it is enough to accomplish the task. so simple.
like wise we can protect document with  'Comment ' and 'TrackRevision' protection

Unprotect word file:
Now after protection we can unprotect word file using Unprotect method of document class
see below snippet
         object objMiss = System.Reflection.Missing.Value;  
         object fileToOpen = Application.StartupPath + "\\test.doc";  
         object szPassword = "Pass";  
         object bFalse = false;  
         object bTrue = true;  
         //Start Word and create a new document.  
         objApp = new Word.Application();  
         objDoc = objApp.Documents.Open(ref fileToOpen, ref objMiss, ref objMiss, ref objMiss, ref objMiss,  
                         ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss,  
                         ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss);  
         if (objDoc.ProtectionType != Word.WdProtectionType.wdNoProtection)  
           objDoc.Unprotect(ref szPassword);  

So, with the above example we can say it is easy to protect and unprotect document programmatically.
You can get full source code here

    As we know word is heavy object so do not forget to close and dispose it, I have explained it in my previous blog

Someone said, there is always scope for improvement. so I think its a on going think for programming too. Finally we have ready with our code, it is very simple to protect a file with customized password, still many things to discover with word and C#, we can them one by one in near future till then enjoy this stuff and be happy with C# and Word

Suggestions and comments/doubts are always welcome

Happy Programming
- Prasad
Read More » Rate this posting: