Friday, June 10, 2011
Wednesday, May 12, 2010
Creating PDF from DataTable
I have Written a function to create a pdf file from datatable.
The dll can be downloaded from here
You will have to add two name sapces
using iTextSharp.text;
using iTextSharp.text.pdf;
private void ExportDataToPDFTable(DataTable dt, string filename)
{
Document doc = new Document(iTextSharp.text.PageSize.A4, 10, 10, 42, 35);
try
{
string pdfFilePath = Server.MapPath(".") + "/" + filename;
PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream(pdfFilePath, FileMode.Create));
doc.Open();
Font font8 = FontFactory.GetFont("ARIAL", 7);
Font fontHeader = FontFactory.GetFont("ARIAL", 7, 3);
if (dt != null)
{
PdfPTable PdfTable = new PdfPTable(dt.Columns.Count);
foreach (DataColumn dc in dt.Columns)
{
PdfPCell PdfPCell = null;
PdfPCell = new PdfPCell(new Phrase(new Chunk(dc.Caption, fontHeader)));
PdfTable.AddCell(PdfPCell);
}
for (int rows = 0; rows <>
{
for (int column = 0; column <>
{
PdfPCell p = null;
if(dt.Columns[column].DataType==typeof(Int64)) //if it is number then format
{
string price = "";
try
{
price = String.Format("{0:#,###}",Int64.Parse(dt.Rows[rows][column].ToString()));
}
catch
{
}
p = new PdfPCell(new Phrase(new Chunk(price, font8)));
}
else
{
//String.Format("{0:#,###}",
p = new PdfPCell(new Phrase(new Chunk(dt.Rows[rows][column].ToString(), font8)));
}
PdfTable.AddCell(p);
}
}
doc.Add(PdfTable);
}
}
catch (DocumentException docEx)
{
}
catch (IOException ioEx)
{
}
catch (Exception ex)
{
}
finally
{
//Close document and writer
doc.Close();
}
}
The dll can be downloaded from here
You will have to add two name sapces
using iTextSharp.text;
using iTextSharp.text.pdf;
private void ExportDataToPDFTable(DataTable dt, string filename)
{
Document doc = new Document(iTextSharp.text.PageSize.A4, 10, 10, 42, 35);
try
{
string pdfFilePath = Server.MapPath(".") + "/" + filename;
PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream(pdfFilePath, FileMode.Create));
doc.Open();
Font font8 = FontFactory.GetFont("ARIAL", 7);
Font fontHeader = FontFactory.GetFont("ARIAL", 7, 3);
if (dt != null)
{
PdfPTable PdfTable = new PdfPTable(dt.Columns.Count);
foreach (DataColumn dc in dt.Columns)
{
PdfPCell PdfPCell = null;
PdfPCell = new PdfPCell(new Phrase(new Chunk(dc.Caption, fontHeader)));
PdfTable.AddCell(PdfPCell);
}
for (int rows = 0; rows <>
{
for (int column = 0; column <>
{
PdfPCell p = null;
if(dt.Columns[column].DataType==typeof(Int64)) //if it is number then format
{
string price = "";
try
{
price = String.Format("{0:#,###}",Int64.Parse(dt.Rows[rows][column].ToString()));
}
catch
{
}
p = new PdfPCell(new Phrase(new Chunk(price, font8)));
}
else
{
//String.Format("{0:#,###}",
p = new PdfPCell(new Phrase(new Chunk(dt.Rows[rows][column].ToString(), font8)));
}
PdfTable.AddCell(p);
}
}
doc.Add(PdfTable);
}
}
catch (DocumentException docEx)
{
}
catch (IOException ioEx)
{
}
catch (Exception ex)
{
}
finally
{
//Close document and writer
doc.Close();
}
}
Friday, June 19, 2009
Disable Enter Key from submitting the form.
function stopRKey(evt)
{
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type=="text"))
{
return false;
}
}
document.onkeypress = stopRKey;
{
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type=="text"))
{
return false;
}
}
document.onkeypress = stopRKey;
Thursday, September 18, 2008
Finding which button clicked
If you want to know which button is being click befor the button click event there is a function which you will have to override.
override protected void RaisePostBackEvent(IPostBackEventHandler sourceControl, string eventArgument)
{
string s = ((WebControl)sourceControl).ID;
Response.Write(s.ToString());
}
This event is fired after page lod and before button click event.
Using this event one can find that due to which control post back occured.
Tuesday, July 1, 2008
Class Question
- What is the syntax to inherit from a class in C#?
Place a colon and then the name of the base class.
Example: class MyNewClass : MyBaseClass
- Can you prevent your class from being inherited by another class?
Yes. The keyword “sealed” will prevent the class from being inherited.
- Can you allow a class to be inherited, but prevent the method from being over-ridden?
Yes. Just leave the class public and make the method sealed.
- What’s an abstract class?
A class that cannot be instantiated. An abstract class is a class that must be inherited and have the methods overridden. An abstract class is essentially a blueprint for a class without any implementation.
- When do you absolutely have to declare a class as abstract?
1. When the class itself is inherited from an abstract class, but not all base abstract methods have been overridden.
2. When at least one of the methods in the class is abstract.
- What is an interface class?
Interfaces, like classes, define a set of properties, methods, and events. But unlike classes, interfaces do not provide implementation. They are implemented by classes, and defined as separate entities from classes.
- Why can’t you specify the accessibility modifier for methods inside the interface?
They all must be public, and are therefore public by default.
- Can you inherit multiple interfaces?
Yes. .NET does support multiple interfaces.
- What happens if you inherit multiple interfaces and they have conflicting method names?
It’s up to you to implement the method inside your own class, so implementation is left entirely up to you. This might cause a problem on a higher-level scale if similarly named methods from different interfaces expect different data, but as far as compiler cares you’re okay.
To Do: Investigate
- What’s the difference between an interface and abstract class?
In an interface class, all methods are abstract - there is no implementation. In an abstract class some methods can be concrete. In an interface class, no accessibility modifiers are allowed. An abstract class may have accessibility modifiers.
- What is the difference between a Struct and a Class?
Structs are value-type variables and are thus saved on the stack, additional overhead but faster retrieval. Another difference is that structs cannot inherit.
C# Basic
- Does C# support multiple-inheritance?
No.
- Who is a protected class-level variable available to?
It is available to any sub-class (a class inheriting this class).
- Are private class-level variables inherited?
Yes, but they are not accessible. Although they are not visible or accessible via the class interface, they are inherited.
- Describe the accessibility modifier “protected internal”.
It is available to classes that are within the same assembly and derived from the specified base class.
- What’s the top .NET class that everything is derived from?
System.Object.
- What does the term immutable mean?
The data value may not be changed. Note: The variable value may be changed, but the original immutable data value was discarded and a new data value was created in memory.
- What’s the difference between System.String and System.Text.StringBuilder classes?
System.String is immutable. System.StringBuilder was designed with the purpose of having a mutable string where a variety of operations can be performed.
- What’s the advantage of using System.Text.StringBuilder over System.String?
StringBuilder is more efficient in cases where there is a large amount of string manipulation. Strings are immutable, so each time a string is changed, a new instance in memory is created.
- Can you store multiple data types in System.Array?
No.
- What’s the difference between the System.Array.CopyTo() and System.Array.Clone()?
The Clone() method returns a new array (a shallow copy) object containing all the elements in the original array. The CopyTo() method copies the elements into another existing array. Both perform a shallow copy. A shallow copy means the contents (each array element) contains references to the same object as the elements in the original array. A deep copy (which neither of these methods performs) would create a new instance of each element's object, resulting in a different, yet identacle object.
- How can you sort the elements of the array in descending order?
By calling Sort() and then Reverse() methods.
- What’s the .NET collection class that allows an element to be accessed using a unique key?
HashTable.
- What class is underneath the SortedList class?
A sorted HashTable.
- Will the finally block get executed if an exception has not occurred?
Yes.
- What’s the C# syntax to catch any possible exception?
A catch block that catches the exception of type System.Exception. You can also omit the parameter data type in this case and just write catch {}.
- Can multiple catch blocks be executed for a single try statement?
No. Once the proper catch block processed, control is transferred to the finally block (if there are any).
- Explain the three services model commonly know as a three-tier application.
Presentation (UI), Business (logic and underlying code) and Data (from storage or other sources).
Tuesday, April 29, 2008
Recursive Function SQL Server
Simple Recursive Function finding the factorial: -
create FUNCTION Factorial(@x int ) RETURNS INT
AS
BEGIN
DECLARE @i int
IF @x <= 1 SET @i = 1
ELSE
SET @i = @x * dbo.Factorial( @x - 1 )
RETURN (@i)
END
Calling the function
select dbo.factorial(4)
ans: 24
Complex Recursive function
The Problem Suppose you have an employee called John and John directly reports Nancy. Nancy directly reports to Peter and Peter directly reports to Diana. The table you have set up to model this relationship has two fields for simplicity EmployeeID varchar(50), ManagerID varchar(50). In your table are the following entries
EmployeeID ManagerID
Diana
Peter Diana
Nancy Peter
John Nancy
Now John is a very insecure person and knows he is way down on the food chain. He requests a report from you that gives him a synopsis of where he stands in the food chain of the company to figure out how far he needs to climb. You think about it for a minute and come up with this recursive function that given a person's employee id will provide a list of all his direct and indirect supervisors ordered by rank. The function looks as follows
CREATE FUNCTION ReportsTo (@EmployeeID varchar(50), @depth int)
RETURNS @retFindReports TABLE (EmployeeID varchar(50) primary key, depth int) AS BEGIN
DECLARE @ManagerID varchar(50)
DECLARE @nextDepth int
SET @nextDepth = @depth + 1
SET @ManagerID = (SELECT ManagerID FROM Employees WHERE EmployeeID = @EmployeeID)
IF @ManagerID IS NOT NULL and @ManagerID > '' and @depth <= 5 and @ManagerID <> @EmployeeID
/***We stop if a person is their own manager or a person has no manager or We've exceeded a depth of 5 (to prevent potential infinite recursion ***/
INSERT INTO @retFindReports(EmployeeID, depth)
SELECT EmployeeID , @depth As Depth FROM Employees M Where M.EmployeeID =@ManagerID
UNION
--Recurseively call the function to append on the manager of a person's manager until no more
SELECT EmployeeID, Depth FROM ReportsTo(@managerID, @nextDepth)
RETURN
END
To figure out who John's supervisors are in order of rank you perform the following select statement
SELECT * From reportsTo('John',0) order by depth DESC
This returns
Diana 2
Peter 1
Nancy 0
create FUNCTION Factorial(@x int ) RETURNS INT
AS
BEGIN
DECLARE @i int
IF @x <= 1 SET @i = 1
ELSE
SET @i = @x * dbo.Factorial( @x - 1 )
RETURN (@i)
END
Calling the function
select dbo.factorial(4)
ans: 24
Complex Recursive function
The Problem Suppose you have an employee called John and John directly reports Nancy. Nancy directly reports to Peter and Peter directly reports to Diana. The table you have set up to model this relationship has two fields for simplicity EmployeeID varchar(50), ManagerID varchar(50). In your table are the following entries
EmployeeID ManagerID
Diana
Peter Diana
Nancy Peter
John Nancy
Now John is a very insecure person and knows he is way down on the food chain. He requests a report from you that gives him a synopsis of where he stands in the food chain of the company to figure out how far he needs to climb. You think about it for a minute and come up with this recursive function that given a person's employee id will provide a list of all his direct and indirect supervisors ordered by rank. The function looks as follows
CREATE FUNCTION ReportsTo (@EmployeeID varchar(50), @depth int)
RETURNS @retFindReports TABLE (EmployeeID varchar(50) primary key, depth int) AS BEGIN
DECLARE @ManagerID varchar(50)
DECLARE @nextDepth int
SET @nextDepth = @depth + 1
SET @ManagerID = (SELECT ManagerID FROM Employees WHERE EmployeeID = @EmployeeID)
IF @ManagerID IS NOT NULL and @ManagerID > '' and @depth <= 5 and @ManagerID <> @EmployeeID
/***We stop if a person is their own manager or a person has no manager or We've exceeded a depth of 5 (to prevent potential infinite recursion ***/
INSERT INTO @retFindReports(EmployeeID, depth)
SELECT EmployeeID , @depth As Depth FROM Employees M Where M.EmployeeID =@ManagerID
UNION
--Recurseively call the function to append on the manager of a person's manager until no more
SELECT EmployeeID, Depth FROM ReportsTo(@managerID, @nextDepth)
RETURN
END
To figure out who John's supervisors are in order of rank you perform the following select statement
SELECT * From reportsTo('John',0) order by depth DESC
This returns
Diana 2
Peter 1
Nancy 0
Subscribe to:
Posts (Atom)