ASP Net Notes1
ASP Net Notes1
INTRODUCTION
.Net Architecture
CLR
OS
CLR
Memory management
Garbage collection
To support multiple language
(Note: difference b/w CLR n JVM is that JVM only support single language i.e. java)
BCL
Collection of standard class or common class which we can use .net supported language
E.g. - in VB.Net we use “integer” n in c# we use “int” but we can use “int16”, “int32” in
both.
Note: ASP.net it is just a technology that runs on server with some language.
We must have common language specification for compiler to run .net.
Why .Net?
Powerful
Reusability
For web application not for desktop
-2-
In web development application run on server. At client side there is simple Html
page which is understand by a browser
.net is not platform independent so we must have Microsoft OS on the server and
anything on client coz client only have HTML page
.Net Framework
Different compiler
VB.net C1
J# C3
-3-
MSIL Microsoft Intermediate Language (m/c independent)
We must have JIT( just in time) compiler at server which make native code which
is m/c dependent n CPU specific
Advantages of JIT:
Types of JIT:
PRE
ECHNO
NORMAL
Server
IIS (Internet information service) it is used with 1.1 version
It is not loaded on XP-home edition
We can load it through
Control panel --- add remove files--- windows components
To change home directory
Control panel --- adm tools --- IIS --- CS ---web sites--- default web site
(Right click)--- Properties --- home directory
(By default “c:\netpub\wwwroot”)
To check weather server is running or not
Control panel --- adm tools --- IIS --- CS ---web sites--- default web site
-4-
(Right click)---start/stop. If start n stop is working IIS is running
Web Server included in version 2.0
It can run on XP-home edition
First application
Extension
Concept of Partial class is introduced in ver 2.0 which means we can divide the
class into number of parts. Benefit of this system code(used by system) can be
store in one partial class n developer code in another.
Page load event is fired first without even calling this event. It has to parameters
1st for reference and 2nd for manage event data
-5-
Windows required
Solution explorer
Toolbox
HTML Control (background compatibility)
Run on client side and are browser dependent
Web Server control
Run on server side and are browser independent
Property window(f4)
Two types of layout
Grid layout (available in ver 1.1)
Flow layout (available in both version)
Advantages we work as notepad, page will be light
Weighted due to less labels
Ctrl + space for intelligence help.
Difference b/w property n variable is that property can be read only, write only,
we validation n checks can be used but with variables these r not possible.
Program 1:
Sub Page_load
Label1.text = datetime.now
End sub
In c#
Void page_load ()
{
Label1.text = datetime.now.toString();
}
Me.SmartNavigation = true
-6-
To compile line by line click in front of line where u want to place break and then
press f10.
To add two numbers
Textbox3.text = convert.Toint32(textbox1.text) +
convert.Toint32(textbox2.text);
In C#
Textbox3.text=convert.Tostring(convert.Toint32
(textbox1.text) +convert.Toint32(textbox2.text));
To use common handle i.e. one procedure handling more then one event we add
handles in the end of procedure in Vb.net like
In C#
We change in HTML, use onClick method for this purpose
-7-
Some people like VB.NET's natural language, case-insensitive approach, others like C#'s
terse syntax. But both have access to the same framework libraries. We will discuss about
the differences in the following topics:
VB.NET C#
Support for optional parameters - very XML documentation generated from
handy for some COM interoperability. source code comments. (This is coming
Support for late binding with Option Strict in VB.NET with Whidbey (the code
off - type safety at compile time goes out of name for the next version of Visual
the window, but legacy libraries which Studio and .NET), and there are tools
don't have strongly typed interfaces become which will do it with existing VB.NET
easier to use. code already.)
Support for named indexers. Operator overloading - again, coming to
Various legacy VB functions (provided in VB.NET in Whidbey.
the Microsoft.VisualBasic namespace, Language support for unsigned types
and can be used by other languages with a (you can use them from VB.NET, but
reference to the Microsoft.VisualBasic.dll). they aren't in the language itself). Again,
Many of these can be harmful to support for these is coming to VB.NET
performance if used unwisely, however, in Whidbey.
and many people believe they should be Explicit interface implementation, where
avoided for the most part. an interface which is already
The with construct: it's a matter of debate implemented in a base class can be re-
as to whether this is an advantage or not, implemented separately in a derived
but it's certainly a difference. class. Arguably this makes the class
Simpler (in expression - perhaps more harder to understand, in the same way
complicated in understanding) event that member hiding normally does.
handling, where a method can declare that
it handles an event, rather than the handler Unsafe code. This allows pointer
having to be set up in code. arithmetic etc, and can improve
performance in some situations.
The VB.NET parts of Visual Studio .NET However, it is not to be used lightly, as a
compiles your code in the background. lot of the normal safety of C# is lost (as
While this is considered as an advantage for the name implies). Note that unsafe code
small projects, people creating very large is still managed code, i.e., it is compiled
projects have found that the IDE slows to IL, JITted, and run within the CLR.
-8-
down considerably as the project gets
larger.
Keyword Differences
Purpose VB.NET C#
Declare a variable Private, Public, Friend, declarators (keywords include user-
Protected, Static1, defined types and built-in types)
Shared, Dim
Declare a named Const const
constant
Create a new object New, CreateObject() new
-9-
Take the address of a AddressOf (For class delegate
function members, this operator
returns a reference to a
function in the form of a
delegate instance)
Declare that an object n/a volatile
can be modified
asynchronously
Force explicit Option Explicit n/a. (All variables must be declared
declaration of prior to use)
variables
Test for an object obj = Nothing obj == null
variable that does not
refer to an object
Value of an object Nothing null
variable that does not
refer to an object
Test for a database IsDbNull n/a
null expression
Test whether a n/a n/a
Variant variable has
been initialized
Define a default Default by using indexers
property
Refer to a base class MyBase base
Declare an interface Interface interface
Specify an interface Implements (statement) class C1 : I1
to be implemented
Declare a class Class <implementation> class
Specify that a class MustInherit abstract
can only be inherited.
An instance of the
class cannot be
created.
Specify that a class NotInheritable sealed
cannot be inherited
Declare an Enum <members> End Enum enum
enumerated type
Declare a class Const const (Applied to a field declaration)
constant
Derive a class from a Inherits C2 class C1 : C2
base class
- 10 -
Override a method Overrides override
Declare a method MustOverride abstract
that must be
implemented in a
deriving class
Declare a method NotOverridable (Methods sealed
that can't be are not overridable by
overridden default.)
Declare a virtual Overridable virtual
method, property
(Visual Basic), or
property accessor
(C#, C++)
Hide a base class Shadowing n/a
member in a derived
class
Declare a typesafe Delegate delegate
reference to a class
method
Specify that a WithEvents (Write code - no specific keyword)
variable can contain
an object whose
events you wish to
handle
Specify the events for Handles (Event procedures n/a
which an event can still be associated with a
procedure will be WithEvents variable by
called naming pattern.)
Evaluate an object With objExpr n/a
<.member>
expression once, in
<.member>
order to access End With
multiple members
Structured exception Try <attempt> try, catch, finally, throw
Catch
handling
<handle errors>
Finally
<always execute>
End Try
Decision structure Select Case ..., Case, switch, case, default, goto, break
(selection) Case Else, End Select
Decision structure If ... Then, ElseIf ... if, else
(if ... then) Then, Else, End If
Loop structure While, Do [While, Until] do, while, continue
(conditional) ..., Loop [While, Until]
- 11 -
Loop structure For ..., [Exit For], for, foreach
(iteration) Next
For Each ..., [Exit
For,] Next
Declare an array Dim a() As Long int[] x = new int[5];
Initialize an array Dim a() As Long = {3, int[] x = new int[5] {
4, 5} 1, 2, 3, 4, 5};
- 12 -
Go to Goto goto
Purpose/Size VB.NET C#
Decimal Decimal decimal
Date Date DateTime
(varies) String string
1 byte Byte byte
2 bytes Boolean bool
2 bytes Short, Char (Unicode short, char (Unicode character)
character)
4 bytes Integer int
8 bytes Long long
4 bytes Single float
8 bytes Double double
Operators Differences
Purpose VB.NET C#
Integer division \ /
Modulus (division Mod %
returning only the
remainder)
Exponentiation ^ n/a
Integer division \= /=
Assignment
Concatenate &= NEW +=
Modulus n/a %=
Bitwise-AND n/a &=
Bitwise-exclusive-OR n/a ^=
- 13 -
Bitwise-inclusive-OR n/a |=
Equal = ==
Not equal <> !=
Compare two object Is ==
reference variables
Compare object TypeOf x Is Class1 x is Class1
reference type
Concatenate strings & +
Shortcircuited Boolean AndAlso &&
AND
Shortcircuited Boolean OrElse ||
OR
Scope resolution . . and base
Array element () [ ]
Type cast Cint, CDbl, ..., CType (type)
Programming Difference
Purpose VB.NET C#
Declaring Dim x As Integer int x;
Public x As Integer = 10 int x = 10;
Variables
Comments ' comment // comment
x = 1 ' comment /* multiline
- 14 -
Rem comment comment */
Assignment nVal = 7 nVal = 7;
Statements
Conditional If nCnt <= nMax Then if (nCnt <= nMax)
' Same as nTotal = {
Statements ' nTotal + nCnt. nTotal += nCnt;
nTotal += nCnt nCnt++;
' Same as nCnt = nCnt + 1. }
nCnt += 1 else
Else {
nTotal += nCnt nTotal +=nCnt;
nCnt -= 1 nCnt--;
End If }
Selection Select Case n switch(n)
Case 0 {
Statements MsgBox ("Zero") case 0:
' Visual Basic .NET exits
' the Select at Console.WriteLine("Zero");
' the end of a Case. break;
Case 1 case 1:
MsgBox ("One")
Case 2 Console.WriteLine("One");
MsgBox ("Two") break;
Case Else case 2:
MsgBox ("Default")
End Select Console.WriteLine("Two");
break;
default:
Console.WriteLine("?");
break;
}
- 15 -
Public Shadows Z As String =
"*" public class DervCls :
public Shadows Sub Test() BaseCls
System.Console.WriteLine( _ {
"Test in DervCls") // The hiding element
End Sub public new string Z = "*";
End Class public new void Test()
{
Public Class UseClasses
' DervCls widens to BaseCls. System.Console.WriteLine(
Dim BObj As BaseCls = "Test in DervCls");
New DervCls() }
' Access through derived }
' class.
Dim DObj As DervCls = public class UseClasses
New DervCls() {
// DervCls widens to
Public Sub ShowZ() BaseCls
System.Console.WriteLine( _ BaseCls BObj = new
"Accessed through base "&_ DervCls();
"class: " & BObj.Z) // Access through derived
System.Console.WriteLine(_ //class
"Accessed through derived "&_ DervCls DObj = new
"class: " & DObj.Z) DervCls();
BObj.Test() public void ShowZ()
DObj.Test() {
End Sub
End Class System.Console.WriteLine(
"Accessed through " +
"base class: {0}",
BObj.Z);
System.Console.WriteLine(
"Accessed through" +
" derived class:{0}",
DObj.Z);
BObj.Test();
DObj.Test();
}
}
WHILE ' Test at start of loop while (n < 100)
While n < 100 . n++;
Loops
' Same as n = n + 1.
n += 1
End While '
Parameter ' The argument Y is /* Note that there is
'passed by value. no way to pass reference
Passing by Public Sub ABC( _ types (objects) strictly
Value ByVal y As Long) by value. You can choose
'If ABC changes y, the to either pass the reference
' changes do not affect x. (essentially a pointer), or
End Sub a reference to the reference
(a pointer to a pointer).*/
ABC(x) ' Call the procedure. // The method:
' You can force parameters to void ABC(int x)
' be passed by value, {
- 16 -
' regardless of how ...
' they are declared, }
' by enclosing // Calling the method:
' the parameters in ABC(i);
' extra parentheses.
ABC((x))
Parameter Public Sub ABC(ByRef y As Long) /* Note that there is no
' The parameter y is declared way to pass reference types
Passing by
'by referece: (objects) strictly by
Reference ' If ABC changes y, the changes value.
are You can choose to either
' made to the value of x. pass the reference
End Sub (essentially a pointer),
or a reference to the
ABC(x) ' Call the procedure. reference (a pointer to a
pointer).*/
// Note also that unsafe C#
//methods can take pointers
//just like C++ methods. For
//details, see unsafe.
// The method:
void ABC(ref int x)
{
...
}
// Calling the method:
ABC(ref i);
Structured Try // try-catch-finally
If x = 0 Then try
Exception Throw New Exception( _ {
Handling "x equals zero") if (x == 0)
Else throw new
Throw New Exception( _ System.Exception(
"x does not equal zero") "x equals zero");
End If else
Catch err As System.Exception throw new
MsgBox( _ System.Exception(
"Error: " & Err.Description) "x does not equal
Finally zero");
MsgBox( _ }
"Executing finally block.") catch (System.Exception err)
End Try {
System.Console.WriteLine(
err.Message);
}
finally
{
System.Console.WriteLine(
"executing finally
block");
}
- 17 -
Object
Reference
to Nothing
Initializing Dim dt as New System.DateTime( _ System.DateTime dt =
2001, 4, 12, 22, 16, 49, 844) new System.DateTime(
Value
2001, 4, 12, 22, 16,
Types 49, 844);
VB.NET C#
Visual Basic 2005 has many new and improvedWith the release of Visual Studio 2005,
language features -- such as inheritance, the C# language has been updated to
interfaces, overriding, shared members, and version 2.0. This language has following
overloading -- that make it a powerful object- new features:
oriented programming language. As a Visual
Basic developer, you can now create 1. Generics types are added to the
multithreaded, scalable applications using language to enable programmers
explicit multithreading. This language has to achieve a high level of code
following new features, reuse and enhanced performance
1. Continue Statement, which for collection classes. Generic
immediately skips to the next iteration types can differ only by arity.
of a Do, For, or While loop. Parameters can also be forced to
2. IsNot operator, which you can avoid be specific types.
using the Not and Is operators in an 2. Iterators make it easier to dictate
awkward order. how a for each loop will iterate
3. Using...End. Using statement block over a collection's contents.
ensures disposal of a system resource 3. // Iterator Example
4. public class NumChar
when your code leaves the block for 5. {
any reason. 6. string[] saNum = {
4. Public Sub setbigbold( _ 7. "One", "Two", "Three",
5. ByVal c As Control) 8. "Four", "Five", "Six",
6. Using nf As New _ 9. "Seven", "Eight", "Nine",
7. System.Drawing.Font("Arial",_ 10. "Zero"};
- 18 -
8. 12.0F, FontStyle.Bold) 11. public
9. c.Font = nf 12.
10. c.Text = "This is" &_ System.Collections.IEnumera
11. "12-point Arial bold" tor
12. End Using 13. GetEnumerator()
End Sub 14. {
13. Explicit Zero Lower Bound on an 15. foreach (string num in
saNum)
Array, Visual Basic now permits an
16. yield return num;
array declaration to specify the lower 17. }
bound (0) of each dimension along with 18. }
the upper bound. 19. // Create an instance of
14. Unsigned Types, Visual Basic now 20. // the collection class
21. NumChar oNumChar = new
supports unsigned integer data types NumChar();
(UShort, UInteger, and ULong) as well 22. // Iterate through it with
as the signed type SByte. foreach
15. Operator Overloading, Visual Basic 23. foreach (string num in
oNumChar)
now allows you to define a standard 24. Console.WriteLine(num);
operator (such as +, &, Not, or Mod) on a
25. Partial type definitions allow a
class or structure you have defined.
single type, such as a class, to be
16. Partial Types, to separate generated
split into multiple files. The
code from your authored code into
Visual Studio designer uses this
separate source files.
feature to separate its generated
17. Visual Basic now supports type
code from user code.
parameters on generic classes,
26. Nullable types allow a variable
structures, interfaces, procedures, and
to contain a value that is
delegates. A corresponding type
undefined.
argument specifies at compilation time
27. Anonymous Method is now
the data type of one of the elements in
possible to pass a block of code as
the generic type.
a parameter. Anywhere a delegate
18. Custom Events. You can declare
is expected, a code block can be
custom events by using the Custom
used instead: There is no need to
keyword as a modifier for the Event
define a new method.
statement. In a custom event, you 28. button1.Click +=
specify exactly what happens when 29. delegate
code adds or removes an event handler { MessageBox.Show(
to or from the event, or when code "Click!") };
raises the event. 30. . The namespace alias qualifier
19. Compiler Checking Options, The (::) provides more control over
/nowarn and /warnaserror options accessing namespace members.
provide more control over how The global :: alias allows to
warnings are handled. Each one of access the root namespace that
these compiler options now takes a list may be hidden by an entity in
of warning IDs as an optional your code.
parameter, to specify to which warnings 31. Static classes are a safe and
the option applies. convenient way of declaring a
20. There are eight new command-line class containing static methods
compiler options: that cannot be instantiated. In C#
- 19 -
a. The /codepage option specifies v1.2 you would have defined the
which codepage to use when class constructor as private to
opening source files. prevent the class being
b. The /doc option generates an instantiated.
XML documentation file based 32. 8. There are eight new compiler
on comments within your code. options:
c. The /errorreport option a. /langversion option: Can
provides a convenient way to be used to specify
report a Visual Basic internal compatibility with a
compiler error to Microsoft. specific version of the
d. The /filealign option specifies language.
the size of sections in your b. /platform option: Enables
output file. you to target IPF (IA64 or
e. The /noconfig option causes the Itanium) and AMD64
compiler to ignore the Vbc.rsp architectures.
file. c. #pragma warning: Used
f. The /nostdlib option prevents to disable and enable
the import of mscorlib.dll, individual warnings in
which defines the entire System code.
namespace. d. /linkresource option:
g. The /platform option specifies Contains additional
the processor to be targeted by options.
the output file, in those e. /errorreport option: Can
situations where it is necessary be used to report internal
to explicitly specify it. compiler errors to
Microsoft over the
h. The /unify option suppresses Internet.
warnings resulting from a
mismatch between the versions f. /keycontainer and
of directly and indirectly /keyfile: Support
referenced assemblies. specifying cryptographic
keys.
- 20 -
VALIDATION AND CHECKS
Types of validators
- 21 -
Text message
Validation summary
- 22 -
Addition properties in version 2.0
set the causes validation property to false to disable the validation of button
validation group property of validator (textbox, validationSummary n of button)
o ValidationGroup a
property of validator
o SetfocusonError to go directly to the error point skip correct places.
Add more than one page in website (Click on website add new item webform)
To Make startup page (go to solution explorer right click on page set as start
page).
checkbox
- 23 -
Radio button
o Property GroupName to mention the group.
o They have only selected whenever we click on them not lick checkbox.
Checkbox list
o DataBound control it is collection of checkboxes
o Useful when we want to make checkboxes at runtime.
o Properties
Repeat columns value
Repeat direction vertical/ horizontal
o 3 method of defining the checkboxes
Edit items
Selected by default selected
Enabled disable to user to change it
/* For collection
We must have namespace
Using System.collection;
Collection is data structure to store items
Arraylist
array of objects which increase its size dynamically.
by default has size equal to 6 characters.
*/
- 24 -
Arraylist arr = new ArrayList();
arr.add(“abc”);
arr.add(“xyz);
checkboxlist1.dataSource = arr;
checkboxlist1.dataBind();
Checkboxlist1.items[0].enabled = false;
Button1_click
{
For(int32 i=0;i<checkboxlist1.items.count; i++)
{
If(checkboxlist1.item[i].selected==true)
Textbox1.text+=checkboxlist1.item[i].
text +”\n”;
}
}
Textbox property
Textmode multiple line (to display data in multiple line)
To store different value in checkbox at behind
(hidden name value, display name text)
To add value field
Checkboxlist1.items.add(new listItem(“aa”,”1”));
To retrieve value
Checkboxlist1.items[i].value;
- 25 -
DATABASE HANDLING
Difference between MsAccess and SQL
In oracle & SQL there are triggers, procedure, functions, cursor generally know as
compile objects which are store in database and executed in database only due to
which traffic will not slow down.
Database server and application server are two different things.
Store procedure once executed, next time the procedure will be faster than before.
Less space in access.
Less security in access.
Oracle is 99.9% used by the those companies which have own server.
In Web development 99% we use SQL.
Database connectivity
- 26 -
There are 4 ways of connectivity with database
o ODBC (Open DataBase Connectivity) Used to connect to each n
o OLEDB (Object Linking & Embedding) every server
To create database
o View server explorer
o In last there is “server” to know the server name
o Data connection(right click) create new SQL server DB
o Mention these fields
Server name sac
Use SQL server authentication
Username “sa” (default)
New database name dbemployee
o Now this dbemployee will be added in data connection
o Sac.dbemployee table(right click) add new table
o Mention column name and data type as
Eno int
Ename varchar(50)
Eaddress varchar(50)
Esal int
Difference between varchar and nvarchar is that varchar uses ASCII and nvarchar
uses Unicode.
Web.config file
o It is used to store connection string. It is to manipulate it if server name, uid
changes instead of going to each n every page we just change it in web.config.
o Non compile file where as module has to compile
o XML based, Case sensitive
o Secure in version 2.0 (we cant view the file without coding)
o Intelligence help is provided in version 2.0
o It can be multiple in single project but machine.config is single in one project.
o It is for project configuration e.g. security setting, session setting etc
o To add web.config
- 27 -
Website add new item web conf file
o Add connection string in this file
<connection string>
key
uid=sa; pwd=admin”/>
It is used if u have
mentioned password
</connection string>
o Server name in connection string is not compulsory if ur server is same
system where application is running.
o In 1.0 we add connection string in <appsettings> tag
Eg. <add key=”cs” value=”database=dbemp;uid=sa”>
And Excess this as configurationSetting.AppSettings[“cs”]
Difference between
o Hash stores key as well as value
o Array stores only value
We should add
Using System.data.SQLClient;
Class_default
{
SQLConnection con = new SQLConnection();
Page_load
{
This.smartNavigation = true;
Con.connectionString =
ConfigurationManager.ConnectionString[“nonu”].
connectionString;
If (con.State ==ConnectionState.Closed)
{
Con.open();
- 28 -
}
// open() make connection active & make connectivity with SQL server.
// before using open() we must check the state of connection otherwise
problem of connection pooling occur.
// don’t insert control directly on page coz it will not look going when the resolution
changes.
If(page.isPostBack == false)
textbox1.text=getAuto().toString();
}
Button1_click // save
{
SQLcommand cmd = new sqlcommand();
// SQLCommand bridge between data and database. Used for save, delete, update,
display
cmd.CommandText.=”Insert into themp
values(@eno,@en,@ed@es)”;
// commandText is used to specify query or store procedure, @eno are parameters with
are used at runtime
cmd.command=con;
// connection established
cmd.parameters.add(“@eno”,sqldbtype.Int).value =
convert.ToInt32(textbox1.text);
// ExecuteNonQuery Execute the query and return the no. of data received.
cmd.dispose(); // destructor
textbox1.text= getAuto().toString();
//textbox1.text = “ “;
textbox2.text = “ “;
textbox3.text = “ “;
textbox4.text = “ “;
}
- 29 -
}
}
Update code
Button2_click //update
{
SQLcommand cmd = new sqlcommand ();
cmd.commandText=”update tbemp set ename=@en, edd =
@ed, esal = @es where empno = @eno”;
cmd.command=con;
cmd.parameters.add (“@eno”, sqldbtype.Int).value =
convert.ToInt32 (textbox1.text);
cmd.parameters.add (“@en”, sqldbtype.Varchar, 50).
value = textbox2.text;
cmd.executeNonQuery ();
cmd.dispose ();
textbox1.text = “ “;
textbox2.text = “ “;
textbox3.text = “ “;
textbox4.text = “ “;
}
Delete Code
Button3_click //delete
{
SQLcommand cmd = new sqlcommand();
cmd.commandText=”delete from tbemp where empno=@eno”;
cmd.command=con;
cmd.parameters.add(“@eno”,sqldbtype.Int).value =
convert.ToInt32(textbox1.text);
cmd.parameters.add(“@en”,sqldbtype.Varchar, 50).
value =textbox2.text;
cmd.executeNonQuery();
cmd.dispose();
textbox1.text = “ “;
textbox2.text = “ “;
textbox3.text = “ “;
textbox4.text = “ “;
}
Display code
- 30 -
Button4_click
{
SQLcommand cmd = new sqlcommand();
cmd.commandText =”select * from tbemp”;
cmd.connection = con;
SQLDataReader dr;
/*
SQLDataReader is used to view data,
It is read only.
Forward only ( only go in forward direction)
It is the fastest way of data retrieval.
Sequential read.
No need of “new” operator.
It is segantal class used to pass reference just like abstract class.
We should close it after using it coz otherwise we can’t use it again like static
method it has only one memory.
*/
Dr = cmd.ExecuteReader ();
// ExecuteReader just execute the query n store the data in variable(just for display)
Listbox1.dataTextField =”ename”;
Listbox1.dataValueField =”empno”;
Listbox1.DataSource = dr;
Listbox1.DataBind();
Dr.close();
cmd.dispose();
}
Listbox1_selectedIndexChanged
{
SQLcommand cmd = new sqlcommand ();
cmd.commandText=”select * from dbemp where empno =
@eno”;
- 31 -
cmd.command=con;
cmd.parameters.add (“@eno”, sqldbtype.Int).value =
convert.ToInt32 (listbox1.selectedValue);
SqlDataReader dr;
Dr = cmd.ExecuteReader();
If(dr.HasRows)
{
Dr.Read(); // to read the next line
Textbox1.Text = dr [“empno”].ToString();
Textbox1.Text = dr [“ename”].ToString();
Textbox1.Text = dr [“eaddress”].ToString();
Textbox1.Text = dr [“esal”].ToString();
}
// convert the data to string coz by default they are objects
Dr.close();
cmd.dispose();
}
cmd.connection = con;
Int32 r = convert.ToInt32(cmd.executeScalar()) + 1;
// executeScalar for query which return single value, if multiple value is there
then
It returns first column’s fist value.
cmd.dispose();
Return r;
}
- 32 -
STORE PROCEDURES
- 33 -
Save procedure
When we save this CREATE will automatically changes to ALTER that means in
future we can only alter this procedure.
If we don’t specify the size in varchar then it will store only one character.
Update procedure
Delete procedure
Display procedure
- 34 -
CREATE PROCEDURE dispemp
AS
Select * from tbemp.
Find procedure
We can store more than one query in one procedure when we do more than one work
in a single step like when we click on button then Save n Update will run
simultaneous.
Authentication procedure
If @ap is null
Return -1
Else
If @ap = @p
Return 1
Else
Return -2
If we don’t write anything in front of parameter then by default they are of type input.
If uname is not valid then select statement return null in @ap.
Now instead of writing command in front end we write these two lines
o Cmd.commandText=”Procedure name”;
o Cmd.commandType=commandType.StoreProcedure;
CommandType tells us the type of command.
- 35 -
To enter data directly to table right click on the table in the server explorer
show table data.
Add two three accounts in the table
Design the front view design of login screen
Using System.data.SQLClient;
Class_default
{
SQLConnection con = new SQLConnection;
Page_load
{
Con.connectionString = configurationManager.
connectionString[“nonu”].connectionSting;
if (con.state = = connectionState.closed)
{
Con.open();
}
}
Private Int32 checkuser(String u, String p)
{
SQLCommand cmd = new SQLCommand();
cmd.commandText = “loginCheck”;
cmd.commandType = commandType.StoreProcedure
cmd.pamameter.add(“@u”,SQLVbType.varchar, 50).value=u;
cmd.pamameter.add(“@p”,SQLVbType.varchar, 50).value=p;
cmd.parameter.add(p1);
cmd.ExecuteNonQuery();
Int32 k =convert.Toint32(cmd.parameter[“@ret”].value);
cmd.dispose();
Return k;
}
- 36 -
button1_click
{
Int32 r = checkUser(Textbox1.text, Textbox2.text);
If ( r = = -1)
{
Label1.text = “ WRONG USER”;
}
Else if ( r = = -2)
{
Label1.text = ”wrong Password”;
}
Else
{
Label1.text = ”LOGIN”;
}
}
TEMPLATES
- 37 -
o Data grid
Five type of Composite databound control are there in version 2.0
o Repeator
o Data list
o Grid view
o Form view
o Detail view
All Composite databound control work with templates & vice versa
Repeater
using System.Data.SqlClient;
- 38 -
["cs"].ConnectionString);
// SqlDataAdapter always used with disconnection approach. It implicit open & close the
Connection
/* DataSet
Collection of table
Equal to DataReader
We can set the relations
Very important point is that it read and write data in XML format
Types
o Type DataSet
We define the structure at design time
Performance is better than untype DataSet
We use it in reports or when we know fixed no. of columns
Extension .xsd
o Untype DataSet
Define structure at run time
Data is also added at run time
Performance is slow
We use this if we don’t know fixed no of column
*/
adp.Fill(ds);
// Fill create connection, open it, execute query, put data in DataSet close connection
Repeater1.DataSource = ds;
Repeater1.DataBind();
}
Go to HTML of default.aspx
<ItemTemplate>
<table>
<tr>
<td width=20px bgcolor=green></td>
<td>
<img src="<%#Eval("bookImg") %>" width='50px’
height='50px'/>
</td>
<td>
<b>Title: </b><% # Eval("bookTitle")%><br />
- 39 -
<b>Author: </b><% #Eval("bookAuthor")%><br />
<b>Publisher: </b><% #Eval("bookPub")%><br />
<b>Price: </b><% #Eval("bookPrice")%><br />
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
Default.aspx
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table>
<tr bgcolor=green>
<th>BookId</th>
<th>Title</th>
<th>Author</th>
<th>Publisher</th>
<th>Price</th>
<th>Discount</th>
<th>Amount</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr bgcolor=lime>
<td><%#Eval("bookId")%></td>
<td><%#Eval("bookTitle")%></td>
<td><%#Eval("bookAuthor")%></td>
<td><%#Eval("bookPub")%></td>
<td><%#Eval("bookPrice")%></td>
<td><%#CalDis(Convert.ToInt32(Eval("bookPrice"))) %>
</td>
<td><%#CalAmt(Convert.ToInt32(Eval("bookPrice"))) %>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
<AlternatingItemTemplate>
<tr bgcolor=olive>
- 40 -
<td><%#Eval("bookId")%></td>
<td><%#Eval("bookTitle")%></td>
<td><%#Eval("bookAuthor")%></td>
<td><%#Eval("bookPub")%></td>
<td><%#Eval("bookPrice")%></td>
<td><%#CalDis(Convert.ToInt32(Eval("bookPrice"))) %>
</td>
<td><%#CalAmt(Convert.ToInt32(Eval("bookPrice"))) %>
</td>
</tr>
</AlternatingItemTemplate>
</asp:Repeater>
Default.aspx.cs
- 41 -
o It’s the first template, which will run.
Footer templates will run in the last
We can excess only public and protected member in HTML.
Alternating item templates work with item templates alternating.
Repeater me different column wala concept nahi hota.
Datalist
Using System.Data.Sqlclient;
Page_load
{
- 42 -
If(page.isPostBack==false)
ListBind();
}
In HTML
<asp:DataList…>
<ItemTemplate>
<b>Title:</b><%#Eval(“bookTitle”)%><br/>
<b>Author:</b><%#Eval(“bookAuthor”)%><br/>
<b>Publisher:</b><%#Eval(“bookPub”)%><br/>
<b>Price:</b><%#Eval(“bookPrice”)%><br/>
<asp:LinkButton ID=”lb” Text=”Edit” CommandName=”Edit”
Runat=”server”>
</asp:LinkButton>
</ItemTemplate>
</asp:DataList>
<EditItemTemplate>
<b>Title:</b>
<asp:TextBox ID=”t1” Text=’<%#Eval(“bookTitle”)%>’
Runat=”server”>
</asp:TextBox><br/>
<b>Author:</b>
<asp:TextBox ID=”t1” Text=’<%#Eval(“bookTitle”)%>’
Runat=”server”>
</asp:TextBox><br/>
<b>Publisher:</b>
<asp:TextBox ID=”t1” Text=’<%#Eval(“bookPub”)%>’
Runat=”server”>
</asp:TextBox><br/>
- 43 -
<b>Price:</b>
<asp:TextBox ID=”t1” Text=’<%#Eval(“bookPrice”)%>’
Runat=”server”>
</asp:TextBox><br/>
</EditItemTemplate>
To make event
DataList properties icon(event) EditCommand(double click)
DataList properties icon(event) CancelCommand(double click)
DataList1_EditCommand(source, e)
{
DataList1.EditItemIndex = e.Item.ItemIndex;
ListBind();
}
DataList1_CancelCommand(source, e)
{
DataList1.EditItemIndex = -1;
ListBind();
}
DataList1_UpdateCommand(source, e)
{
String title, author, pub;
Int32 prc;
Title=((textbox)(e.Item.FindControl(“t1”))).text;
Author =((textbox)(e.Item.FindControl(“t2”))).text;
Pub =((textbox)(e.Item.FindControl(“t3”))).text;
Prc=Convert.ToInt32(((textbox)
(e.Item.FindControl(“t4”))).text);
bid = Convert.ToInt32
(DataList1.DataKeys[e.Item.ItemIndex]);
SqlConnection con = new SqlConnection();
- 44 -
con.ConnectionString = ConfigurationManager.
ConnectionStrings["cs"].ConnectionString;
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.ExecuteNonQuery();
cmd.Dispose();
DataList1.EditItemIndex = -1;
ListBind();
}
To make direct connection with database without coding we use SqlDataSource
o It is used with 2 – tier architecture
o Two layers in 2 – tier architecture are
Data Access Layer
Presentation Layer
o Used for database connectivity, to read, insert, update etc.
In HTML
- 45 -
<ItemTemplate>
<b>Name:</b><%#Eval("productName")%><br />
<b>Price:</b><%#Eval("unitPrice")%><br />
<b>CategoryId:</b><%#Eval("categoryId")%><br />
<b>SupplierId:</b><%#Eval("supplierId")%><br />
<asp:LinkButton ID="lb" Text=Edit CommandName="edit"
runat=server>
</asp:LinkButton><br /><br />
</ItemTemplate>
<EditItemTemplate>
<b>Name:</b><asp:TextBox ID="tb1" Text='<%#Eval
("productName")%>' runat=server></asp:TextBox><br />
<b>Category:</b>
<asp:DropDownList ID="dd1" DataTextField="categoryName"
DataValueField="CategoryId" DataSourceID="SqlDataSource2"
runat=server SelectedValue='<%#Eval("categoryId")%>'>
</asp:DropDownList><br />
<b>Supplier:</b>
<asp:DropDownList ID="dd2" DataTextField="companyName"
DataValueField="supplierId" DataSourceID="SqlDataSource3"
runat=server SelectedValue='<%#Eval("supplierId")%>'>
</asp:DropDownList><br />
</EditItemTemplate>
</asp:DataList>
DataList1_EditCommand(source, e)
{
DataList1.EditItemIndex = e.Item.ItemIndex;
DataList1.DataBind();
}
- 46 -
DataList1_CancelCommand(source, e)
{
DataList1.EditItemIndex = -1;
DataList1.DataBind();
}
DataList1_UpdateCommand(source, e)
{
String pn, prc, cd, sd, pid;
pn = ((TextBox)(e.Item.FindControl("t1"))).Text;
prc =((TextBox)(e.Item.FindControl("t2"))).Text;
cd = ((DropDownList)(e.Item.FindControl("dd1"))).Text;
sd ((DropDownList)(e.Item.FindControl("dd2"))).Text);
SqlDataSource1.UpdateParameter[“pn”].DefaultValue=pn;
SqlDataSource1.UpdateParameter[“un”].DefaultValue=pn;
SqlDataSource1.UpdateParameter[“cid”].DefaultValue=cd;
SqlDataSource1.UpdateParameter[“sid”].DefaultValue=sd;
/*
DataList Property DataKeyField ProductId
In this field we mention those field which we don’t want to display but used in
programming.
DataKeys Array[0] 0th row ka productId
*/
pd = (DataList1.DataKeys[e.item.itemIndex]).ToString();
SqlDataSource1.UpdateParameter[“pid”].DefaultValue=pd;
SqlDataSource1.update();
Datalist1.EditItemIndex = -1;
Datalist1.databind();
- 47 -
Q. PRODUCTS WITH CHECKBOX
Using System.Data.Sqlclient;
Page_load
{
If(page.isPostBack==false)
{
SqlDataAdapter adp = new SqlDataAdapter("select * from tbbook",
ConfigurationManager.ConnectionStrings["cs"].ConnectionString);
- 48 -
}
Button_click
{
String st=””;
For(int32 i=0; i<DataList.item.count;i++;)
{
checkbox c=(checkbox)(Datalist1.item[I].FindControl(“cb”));
if(c.checked ==true)
st +=DataList1.DataKey[I].toString() +”,”;
}
St = st.Substring(0,st.length-1);
In HTML
<asp:DataList1…>
<ItemTemplate>
<b><%Eval(“productName”)%><br/>
<asp:checkbox ID=”cb” text=”Buy” runat=server>
</ItemTemplate>
</asp:DataList1>
<asp:DataList2>
<ItemTemplate>
<b><%Eval(“productName”)%></b><br/>
<b><%Eval(“unitPrice”)%></b><br/>
</ItemTemplate>
</asp:DataList1>
- 49 -
Q. DISPLAY SELECTED DATA IN TEXTBOX
Using System.Data.Sqlclient;
- 50 -
Page_load
{
If(page.isPostBack==false)
ListBind();
}
DataList1_SelectedIndexChanged
{
String st;
st = "select * from tbbook where bookId=" +
DataList1.DataKeys[selectedIndex].ToString();
// DS is an object n is very heary so it’s not good to call it again n again. We should use
properties, method, variable but not objects
DataRowView r;
r=ds.Tables[0].DefaultView[0];
TextBox1.Text = r[0]["bookTitle"].ToString();
TextBox2.Text =r[0]["bookAuthor"].ToString();
TextBox3.Text = r[0]["bookPub"].ToString();
TextBox4.Text = r[0]["bookPrice"].ToString();
}
In HTML
<asp:DataList…>
<ItemTemplate>
<b>Title:
</b><asp:LinkButton ID="lb" Text='<%#Eval("bookTitle")%>'
CommandName=”select" runat=server>
</asp:LinkButton><br />
- 51 -
<b>Author: </b><%#Eval("bookAuthor")%><br />
<b>Publisher: </b><%#Eval("bookPub")%><br />
<b>Price: </b><%#Eval("bookPrice")%><br />
</ItemTemplate>
In HTML
<head runat="server">
<title>Untitled Page</title>
<style >
.abc{font-size:larger;font-weight:bold}
.xyz{display:none;visibility:hidden}
</style>
<script language='javascript'>
function getData(id)
{
var e;
- 52 -
color(id);
e=document.getElementById('d'+id);
if(e)
{
if(e.style.display!='block')
{
e.style.display='block';
e.style.visibility='visible';
}
else
{
e.style.display='none';
e.style.visibility='hidden';
}
}
for(var i=0;i<6;i++)
{
if(i==id)
{
i++;
}
var e1=document.getElementById('d'+i);
if(e1)
{
e1.style.display='none';
e1.style.visibility='hidden';
}
}
}
function color(id)
{
var e1;
e1=document.getElementById('h'+id);
if(e1)
{
e1.style.color='blue';
}
for(var i=0;i<6;i++)
{
if(i==id)
{
i++;
}
e2=document.getElementById('h'+i);
if(e2)
{
e2.style.color='black';
- 53 -
}
}
}
</script>
<b><%#Eval("bookTitle")%><br /></b>
</div>
<div id='d<%#DataBinder.Eval(Container,"itemindex")%>'
class='xyz'>
<b> Author:</b><%#Eval("bookAuthor")%><br />
<b> Publisher:</b><%#Eval("bookPub")%><br />
<b> Price:</b><%#Eval("bookPrice")%><br /><br />
</div>
</ItemTemplate>
</asp:Repeater>
Q. PAGING
- 54 -
@pagenumber int,
@pagesize int
)
AS
declare @strec int
declare @endrec int
declare @stpid int
declare @endpid int
declare @reccount int
open c_prd
fetch absolute @strec from c_prd into @stpid
Default.aspx.cs
- 55 -
}
private void PageBind(Int32 pg)
{
Int32 nor, repcol;
nor = (Convert.ToInt32(DropDownList1.SelectedValue));
if (nor <= 4)
{
repcol = nor;
}
else
{
repcol = Convert.ToInt32(nor / 2);
}
DataList1.RepeatColumns = repcol;
cmd.Parameters.Add("@pagenumber",SqlDbType.Int).Value=pg;
cmd.Connection = con;
SqlDataReader dr;
dr = cmd.ExecuteReader();
dr.Read();
Int32 total,t;
total = Convert.ToInt32(dr[0]);
if (total % nor == 0)
{
t = Convert.ToInt32(total / nor);
}
else
{
t = Convert.ToInt32(total / nor +1);
}
Label1.Text = pg.ToString();
Label2.Text = "of";
Label3.Text = t.ToString();
Int32 i;
ArrayList arr = new ArrayList();
- 56 -
arr.Add("<");
for (i = 1; i <= Convert.ToInt32(Label3.Text); i++)
{
arr.Add(i.ToString());
}
arr.Add(">");
DataList2.RepeatDirection=RepeatDirection.Horizontal;
DataList2.DataSource = arr;
DataList2.DataBind();
if (dr.NextResult())
{
DataList1.DataSource = dr;
DataList1.DataBind();
}
dr.Close();
cmd.Dispose();
Button1.Enabled = true;
Button2.Enabled = true;
Button3.Enabled = true;
Button4.Enabled = true;
if (pg == 1)
{
Button1.Enabled = false;
Button2.Enabled = false;
}
if (pg == Convert.ToInt32(Label3.Text))
{
Button3.Enabled = false;
Button4.Enabled = false;
}
}
DropDownList1_SelectedIndexChanged(sender, e)
{
PageBind(1);
}
protected void Button1_Click(sender, e) //First
{
PageBind(1);
}
protected void Button2_Click(sender, e) //previous
{
- 57 -
PageBind(Convert.ToInt32(Label1.Text) - 1);
}
protected void Button3_Click(sender, e) //Next
{
PageBind(Convert.ToInt32(Label1.Text) + 1);
}
protected void Button4_Click(sender, e) //Last
{
PageBind(Convert.ToInt32(Label3.Text));
}
void DataList2_SelectedIndexChanged(sender,e)
{
if (DataList2.SelectedIndex==0)
{
if ((Convert.ToInt32(Label1.Text))!= 1)
{
PageBind(Convert.ToInt32(Label1.Text) - 1);
}
}
else if(DataList2.SelectedIndex==DataList2.Items.Count-1))
{
if((Convert.ToInt32(Label1.Text))!=(DataList2.Items.Count - 2))
{
PageBind(Convert.ToInt32(Label1.Text) + 1);
}
}
else
{
PageBind(DataList2.SelectedIndex);
}
}
}
In HTML
</asp:DataList>
- 58 -
<asp:DataList ID="DataList2" runat="server">
<ItemTemplate>
<asp:LinkButton ID="lb" Text='<%#Container.DataItem%>'
CommandName="select" runat="server">
</asp:LinkButton>
</ItemTemplate>
</asp:DataList>
GRIDVIEW
- 59 -
Properties of GridView
o AutoGenerateDeleteButton true
o AutoGenerateEditButton true
o AutoGenerateSelectButton true
o AllowPaging true
o PageSize 2
o PagerSetting
Mode Numeric/NextPrevFirstLast
FirstPageText First
LastPageText Last
PrevPageText Prev
NextPageText Next
Position TopBottom/Bottom
o AllowSorting true
o Columns Bookid properties Readonly true
o DataKeyNames bookid
// In DataKeyField we can specify only single value but in DataKeyName
we can specify more than 1 using “,”
Properties of SqlDataSource
o UpdateQuery
update tbbook set bookTitle=@bookTitle, bookAuthor=@bookAuthor,
bookPub=@bookPub, bookPrice=@bookPrice where bookId=@bookId
GridView1_SelectedIndexChanged(sender, e)
{
TextBox1.Text = GridView1.SelectedRow.Cells[1].Text;
TextBox2.Text = GridView1.SelectedRow.Cells[2].Text;
TextBox3.Text = GridView1.SelectedRow.Cells[3].Text;
TextBox4.Text = GridView1.SelectedRow.Cells[4].Text;
TextBox5.Text = GridView1.SelectedRow.Cells[5].Text;
}
With Coding
- 60 -
}
private void GrdBind()
{
SqlDataAdapter adp = new SqlDataAdapter("select * from tbbook",
ConfigurationManager.ConnectionStrings["cs"].ConnectionString);
cmd.Parameters.Add("@price",SqlDbType.Int).Value=Convert.ToInt32
(((TextBox)(GridView1.Rows[e.RowIndex].FindControl("tb4"))).Text);
cmd.ExecuteNonQuery();
cmd.Dispose();
GridView1.EditIndex = -1;
- 61 -
GrdBind();
}
GridView1_RowDeleting(sender, e)
{
Int32 eno;
// add DataKeyName in GridView Property
eno = Convert.ToInt32(GridView1.DataKeys
[e.RowIndex][0]);
SqlConnection con = new SqlConnection();
con.ConnectionString = ConfigurationManager.
ConnectionStrings["cs"].ConnectionString;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText="delete from tbbook where bookId=@id";
cmd.Connection = con;
cmd.Parameters.Add("@id",SqlDbType.Int).Value= eno;
cmd.ExecuteNonQuery();
cmd.Dispose();
GridView1.EditIndex = -1;
GrdBind();
}
In HTML
<EditItemTemplate>
<asp:Label ID="l"
Text='<%#Eval("bookId")%>'runat="server">
</asp:Label>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<%#Eval("bookTitle")%>
</ItemTemplate>
<EditItemTemplate>
- 62 -
<asp:TextBox ID="tb1"
Text='<%#Eval("bookTitle")%>' runat="server">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Author">
<ItemTemplate>
<%#Eval("bookAuthor")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="tb2" Text='<%#Eval("bookAuthor")%>'
runat="server">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Publisher">
<ItemTemplate>
<%#Eval("bookPub")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="tb3" Text='<%#Eval("bookPub")%>'
runat="server">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Price">
<ItemTemplate>
<%#Eval("bookPrice")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="tb4" Text='<%#Eval("bookPrice")%>'
runat="server">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Edit">
<ItemTemplate>
<asp:LinkButton ID="lb1" Text="Edit"
CommandName="Edit" runat="server">
</asp:LinkButton>
- 63 -
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID="lb3" Text="Update"
CommandName="Update" runat="server">
</asp:LinkButton>
<asp:LinkButton ID="lb4" Text="Cancel"
CommandName="Cancel" runat="server">
</asp:LinkButton>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Delete">
<ItemTemplate>
<asp:LinkButton ID="lb2" Text="Delete"
CommandName="Delete" runat="server">
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Place Gridview.
Add Web Config file.
Gridview property AutoGenerateColumn false.
GridviewpropertyColumnsAdd(TemplateField)HeaderText Category
GridviewpropertyColumnsAdd(TemplateField)HeaderText Products
In HTML
- 64 -
<b>ID:</b><%#Eval("categoryId")%><br />
<b>Name:</b> <%#Eval("categoryName")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Products">
<ItemTemplate>
- 65 -
public DataSet GetData(Int32 cid)
{
String st;
st="select * from tbproduct where catergoryId="+cid.ToString();
In this query will execute many time and this will lead to poor performance
Another way
// DataView is used to store, filter, Navigate data. It is temperory file on client side.
- 66 -
Q. GRAND AND SUBTOTAL
using System.Data.SqlClient;
using System.Drawing;
- 67 -
categoryname ,case when
(grouping(productname)=1) then 'Sub Total'
else productname end productname,
sum(unitprice) unitprice,sum(unitsinstock)
unitsinstock from products a, categories b
where a.categoryId=b.categoryId group by
categoryname, productname with rollup";
SqlDataAdapter adp=new SqlDataAdapter(st,ConfigurationManager.
ConnectionStrings["cs"].ConnectionString);
DataRow r1;
r1 = ds.Tables[0].Rows[i];
r1[1] = "G.Total";
GridView1.DataSource = ds;
GridView1.DataBind();
}
protected void GridView1_RowDataBound(sender, e)
{
//Event in gridview which is called for all the rows for all templates.
if (e.Row.Cells[0].Text == "Sub Total")
{
e.Row.BackColor = Color.Gray;
}
if (e.Row.Cells[0].Text == "G.Total")
{
e.Row.BackColor = Color.Chocolate;
- 68 -
}
if (e.Row.Cells[1].Text == "-1")
{
e.Row.BackColor = Color.Pink;
e.Row.Cells[0].ColumnSpan = 3;
e.Row.Cells[0].Font.Bold = true;
e.Row.Cells[0].HorizontalAlign =
HorizontalAlign.Center;
e.Row.Cells.RemoveAt(2);
e.Row.Cells.RemoveAt(1);
}
if (e.Row.Cells[0].Text == "Name")
{
e.Row.BackColor = Color.Chocolate;
}
}
}
QUERY ANALYZER
************************************************************************
select case when(grouping(categoryname)=1) then 'G.Total' else categoryname end
categoryname,case when(grouping(productname)=1) then 'Sub Total' else productname
end productname, sum(unitprice) unitprice,sum(unitsinstock) unitsinstock from products,
- 69 -
sum(unitprice) unitprice,sum(unitsinstock) unitsinstock from products a, categories b
where a.categoryId=b.categoryId group by categoryname, productname with rollup
a, categories b where a.categoryId=b.categoryId group by categoryname, productname
with rollup
Place Gridview
Add Web config file n make connection string
Gridview properties autoGenrateColumns false
Click on the tasks menu of gridview Edit Template
Click on Empno in display and in its Template add what so ever control u want
then click on added data bindings and write code in code expression (like
Eval(“empno”))
Do same for other coloums.
When we mention command name of our choice then that is come under
RowCommand event
using System.Data.SqlClient;
- 70 -
public partial class _Default : System.Web.UI.Page
{
SqlConnection con = new SqlConnection();
if (con.State == ConnectionState.Closed)
{
con.ConnectionString = ConfigurationManager.
ConnectionStrings["cs"].ConnectionString;
con.Open();
}
SqlCommand cmd = new SqlCommand();
- 71 -
cmd.Parameters.Add("@es", SqlDbType.Int).Value = es;
cmd.ExecuteNonQuery();
}
public Int32 AutoGen()
{
SqlCommand cmd = new SqlCommand();
if (con.State==ConnectionState.Closed)
{
con.ConnectionString = ConfigurationManager.
ConnectionStrings["cs"].ConnectionString;
con.Open();
}
cmd.CommandText = "select isNull(max(empno), 0) from tbemp";
cmd.Connection = con;
Int32 r = Convert.ToInt32(cmd.ExecuteScalar())+ 1;
cmd.Dispose();
return r;
}
protected void GridView1_RowEditing(sender,e)
{
GridView1.EditIndex = e.NewEditIndex;
GrdBind();
}
protected void GridView1_RowDeleting(sender, e)
{
Int32 eno;
// add DataKeyName in GridView Property
eno = Convert.ToInt32(GridView1.DataKeys
[e.RowIndex][0]);
if (con.State == ConnectionState.Closed)
{
con.ConnectionString = ConfigurationManager.
ConnectionStrings["cs"].ConnectionString;
con.Open();
}
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "delete from tbemp where empno=@eno";
cmd.Connection = con;
- 72 -
cmd.Parameters.Add("@eno", SqlDbType.Int).Value=eno;
cmd.ExecuteNonQuery();
cmd.Dispose();
GrdBind();
}
protected void GridView1_RowUpdating(sender, e)
{
Int32 eno, es;
String en, eadd;
eno = Convert.ToInt32(((Label)(GridView1.Rows[e.RowIndex].
FindControl("label2"))).Text);
es = Convert.ToInt32(((TextBox) (GridView1.Rows[e.RowIndex].
FindControl("textbox5"))).Text);
en = ((TextBox)(GridView1.Rows
[e.RowIndex].FindControl("textbox1"))).Text;
eadd = ((TextBox)(GridView1.Rows[e.RowIndex].
FindControl("textbox3"))).Text;
if (con.State == ConnectionState.Closed)
{
con.ConnectionString = ConfigurationManager.
ConnectionStrings["cs"].ConnectionString;
con.Open();
}
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "update tbemp set ename=@en, eaddress=@eadd,
esal=@es where empno=@eno";
cmd.Connection = con;
cmd.Parameters.Add("@eno", SqlDbType.Int).Value = eno;
cmd.Parameters.Add("@en", SqlDbType.VarChar, 50).Value = en;
cmd.Parameters.Add("@eadd", SqlDbType.VarChar,50).Value=eadd;
cmd.Parameters.Add("@es", SqlDbType.Int).Value = es;
cmd.ExecuteNonQuery();
cmd.Dispose();
GridView1.EditIndex = -1;
GrdBind();
}
protected void GridView1_RowCancelingEdit(sender, e)
{
GridView1.EditIndex = -1;
GrdBind();
}
}
- 73 -
Q. TO DISPLAY DATA IN TEXTBOX JUST CLICKING ON ROW
- 74 -
else if (e.Row.RowType == DataControlRowType.Footer)
{
}
else
{
LinkButton lk = (LinkButton)(e.Row.Cells[6].Controls[0]);
e.Row.Attributes["onClick"] = ClientScript.
GetPostBackClientHyperlink(lk, "");
}
}
protected void GridView1_SelectedIndexChanged(sender,e)
{
TextBox1.Text = GridView1.SelectedRow.Cells[0].Text;
TextBox2.Text = GridView1.SelectedRow.Cells[1].Text;
TextBox3.Text = GridView1.SelectedRow.Cells[2].Text;
TextBox4.Text = GridView1.SelectedRow.Cells[3].Text;
TextBox5.Text = GridView1.SelectedRow.Cells[4].Text;
}
In HTML
Place Gridview
Add web config file
Place CheckBox list
Place button
using System.Data.SqlClient;
- 75 -
{
SqlConnection con = new SqlConnection();
con.ConnectionString = ConfigurationManager.
ConnectionStrings["cs"].ConnectionString;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from tbbook";
cmd.Connection = con;
SqlDataReader dr = cmd.ExecuteReader();
Int32 i;
for (i = 0; i < dr.FieldCount; i++)
{
CheckBoxList1.Items.Add(dr.GetName(i).ToString());
// to get the value of that column we can use GetValue
}
}
}
protected void Button1_Click(sender, EventArgs e)
{
String st = "";
Int32 i;
for (i = 0; i < CheckBoxList1.Items.Count; i++)
{
if (CheckBoxList1.Items[i].Selected == true)
{
st += CheckBoxList1.Items[i].Text + ",";
}
}
st = st.Substring(0, st.Length - 1);
String st1 = "select " + st + " from tbbook";
SqlDataAdapter adp=new SqlDataAdapter(st1,Configuration
Manager.ConnectionStrings["cs"].ConnectionString);
- 76 -
DETAILVIEW
Similar to GridView
we can display only single record
In built paging
Auto editing, delete, insert
We display fields in rows but in gridview we display fields in columns
In this there is AutoGenrateRow
Command name
o Edit
o Update
o Cancel
o Delete
o New
o Insert
We use Detail view for single record operation .
- 77 -
Place DetailView, SqlDataSource and configure them
Properties of DetailView
o AutoGenerateDeleteButton true
o AutoGenerateEditButton true
o AutoGenerateInsertButton true
o AllowPaging true
o DataKeyNames bookid
Properties of SqlDataSource
o UpdateQuery
update tbbook set bookTitle=@bookTitle, bookAuthor=@bookAuthor,
bookPub=@bookPub, bookPrice=@bookPrice where bookId=@bookId
o DeleteQuery
Delete from tbbook where bookId=@bookId
o InsertQuery
Insert into tbemp values(@empno,@ename,@eaddress,@esal)
DetailsView1_ItemUpdating(sender, e)
{
SqlDataSource1.UpdateParameters["eno"].DefaultValue =
e.Keys[0].ToString();
//Another way
//SqlDataSource1.UpdateParameters["eno"].DefaultValue=((TextBox)
(DetailsView1.Rows[0].Cells[1].Controls[0])).Text;
SqlDataSource1.UpdateParameters["en"].DefaultValue =
e.NewValues[1].ToString();
/* whenever we use update then two arrays are make one contaning old values other with
new values. In we refer to array with values as NewValues[ ]*/
SqlDataSource1.UpdateParameters["ed"].DefaultValue =
e.NewValues[2].ToString();
SqlDataSource1.UpdateParameters["es"].DefaultValue =
e.NewValues[3].ToString();
}
DetailsView1_ItemInserting(sender, e)
{
SqlDataSource1.InsertParameters["eno"].DefaultValue=((TextBox)
(DetailsView1.Rows[0].Cells[1].Controls[0])).Text;
SqlDataSource1.InsertParameters["en"].DefaultValue=((TextBox)
- 78 -
(DetailsView1.Rows[1].Cells[1].Controls[0])).Text;
SqlDataSource1.InsertParameters["ed"].DefaultValue=((TextBox)
(DetailsView1.Rows[2].Cells[1].Controls[0])).Text;
SqlDataSource1.InsertParameters["es"].DefaultValue=((TextBox)
(DetailsView1.Rows[3].Cells[1].Controls[0])).Text;
}
DetailsView1_ItemDeleting(sender, e)
{
SqlDataSource1.UpdateParameters["eno"].DefaultValue=
e.Keys[0].ToString();
}
Place DetailVeiw
Add Web Config File
DetailVeiw properties AutoGenrateRows false
DetailVeiw properties fields Add template fields
o Empno
o Name
o Address
o Salary
o For buttons
- 79 -
ItemTempLabelEditDataBinding codeEval(“empno”)
EditItemTemLabelEditDataBinding codeEval(“empno”)
InsertItemTextboxEditDataBinding codeEval(“empno”)
o Ename
ItemTempLabelEditDataBinding codeEval(“ename”)
EditItemTemTextboxEditDataBindincodeEval(“ename”)
InsertItemTextboxEditDataBinding codeEval(“ename”)
o Eaddress
ItemTempLabelEditDataBinding codeEval(“eadd”)
EditItemTemTextBoxEditDataBinding codeEval(“eadd”)
InsertItemTextboxEditDataBinding codeEval(“eadd”)
o Esal
ItemTempLabelEditDataBinding codeEval(“esal”)
EditItemTemTextboxEditDataBinding codeEval(“esal”)
InsertItemTextboxEditDataBinding codeEval(“esal”)
o Buttons
ItemTemp LinkButtons
Edit (CommandName edit)
New (CommandName new)
Delete(CommandName delete)
EditItemTemTextboxEditDataBinding codeEval(“esal”)
Update (CommandName update)
Cancel (CommandName Cancel)
InsertItemTextboxEditDataBinding codeEval(“esal”)
Save (CommandName Insert)
Cancel (CommandName Cancel)
o Empty Data Template //To show table if no data available
ItemTemp LinkButtons
Add Data to Table (CommandName new)
using System.Data.SqlClient;
- 80 -
DataSet ds = new DataSet();
adp.Fill(ds);
DetailsView1.DataSource = ds;
DetailsView1.DataBind();
}
protected void DetailsView1_ModeChanging(sender, e)
{
if (e.NewMode == DetailsViewMode.Edit)
{
DetailsView1.ChangeMode(DetailsViewMode.Edit);
// for EditItemTemplate
}
else if (e.NewMode == DetailsViewMode.Insert)
{
DetailsView1.ChangeMode(DetailsViewMode.Insert);
// for InsertItemTemplate
}
else
{
DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);
// for ItemTemplate
}
DetailBind();
}
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "delete from tbemp where empno=@eno";
cmd.Connection = con;
cmd.Parameters.Add("@eno", SqlDbType.Int).Value = eno;
- 81 -
cmd.ExecuteNonQuery();
cmd.Dispose();
DetailBind();
}
protected void DetailsView1_ItemInserting(Sender, e)
{
Int32 eno, es;
String en, ed;
eno = Convert.ToInt32(((TextBox)(DetailsView1.
Rows[0].FindControl("textbox1"))).Text);
en = ((TextBox)(DetailsView1.Rows[1].
FindControl("textbox3"))).Text;
ed = ((TextBox)(DetailsView1.Rows[2].
FindControl("textbox5"))).Text;
es = Convert.ToInt32(((TextBox)(DetailsView1.Rows[3].
FindControl("textbox7"))).Text);
SqlConnection con = new SqlConnection();
con.ConnectionString = ConfigurationManager.
ConnectionStrings["cs"].ConnectionString;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "insert into tbemp
values(@eno,@en,@ed,@es)";
cmd.Connection = con;
cmd.Parameters.Add("@eno", SqlDbType.Int).Value = eno;
cmd.Parameters.Add("@es", SqlDbType.Int).Value = es;
cmd.Parameters.Add("@en",SqlDbType.VarChar, 50).Value=en;
cmd.Parameters.Add("@ed",SqlDbType.VarChar,50).Value= ed;
cmd.ExecuteNonQuery();
cmd.Dispose();
DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);
DetailBind();
}
protected void DetailsView1_ItemUpdating(sender, e)
{
Int32 eno, es;
String en, ed;
eno = Convert.ToInt32(((Label)(DetailsView1.Rows[0].
- 82 -
FindControl("label2"))).Text);
en = ((TextBox)(DetailsView1.Rows[1].
FindControl("textbox2"))).Text;
ed = ((TextBox)(DetailsView1.Rows[2].
FindControl("textbox4"))).Text;
es = Convert.ToInt32(((TextBox)(DetailsView1.Rows[3].
FindControl("textbox6"))).Text);
con.ConnectionString = ConfigurationManager.
ConnectionStrings["cs"].ConnectionString;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "update tbemp set ename=@en,
eaddress=@ed,esal=@es where empno=@eno";
cmd.Connection = con;
cmd.Parameters.Add("@eno",SqlDbType.Int).Value = eno;
cmd.Parameters.Add("@es",SqlDbType.Int).Value = es;
cmd.Parameters.Add("@en",SqlDbType.VarChar,50).Value=en;
cmd.Parameters.Add("@ed",SqlDbType.VarChar,50).Value=ed;
cmd.ExecuteNonQuery();
cmd.Dispose();
DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);
DetailBind();
}
protected void DetailsView1_PageIndexChanging(sender, e)
{
DetailsView1.PageIndex = e.NewPageIndex;
DetailBind();
}
}
Q. TO SELECT PRODUCT TO SEE THE DETAILS
- 83 -
Add SqlDataSource2
o In “NorthWind” database chose “Product” table in which select
“ProductId”, “ProductName”,”UnitPrice” columns
o Click on where button set
Column CategoryId
Operator =
Source Control
ControlId DropDownList
o Click on add button
Add SqlDataSource3
o In “NorthWind” database chose “Product” table in which select “*”
columns
o Click on where button set
Column ProductId
Operator =
Source Control
ControlId GridView
o Click on add button
using System.Data.SqlClient;
- 84 -
if (!Page.IsPostBack)
{
DropDownBind();
GrdBind();
}
}
private void DropDownBind()
{
this.SmartNavigation = true;
SqlConnection con = new SqlConnection();
con.ConnectionString = ConfigurationManager.
ConnectionStrings["cs"].ConnectionString;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "Select CategoryName,CategoryId from
Categories";
cmd.Connection = con;
SqlDataReader dr;
dr = cmd.ExecuteReader();
DropDownList1.DataTextField = "CategoryName";
DropDownList1.DataValueField = "CategoryId";
DropDownList1.DataSource = dr;
DropDownList1.DataBind();
dr.Close();
cmd.Dispose();
}
private void GrdBind()
{
String st = "Select * from Products a,Suppliers b where
a.SupplierId=b.SupplierId and CategoryId=" +
DropDownList1.SelectedValue.ToString();
- 85 -
for (i = 0; i < GridView1.Rows.Count; i++)
{
CheckBox cb = (CheckBox)(GridView1.Rows[i].
FindControl("cb"));
cb.Checked = true;
}
}
protected void LinkButton3_Click(sender, e)
{
this.SmartNavigation = true;
Int32 i;
for (i = 0; i < GridView1.Rows.Count; i++)
{
CheckBox cb = (CheckBox)(GridView1.Rows[i].
FindControl("cb"));
cb.Checked = false;
}
}
protected void LinkButton2_Click(sender, e)
{
SqlConnection con1 = new SqlConnection();
con1.ConnectionString = ConfigurationManager.
ConnectionStrings["cs1"].ConnectionString;
con1.Open();
- 86 -
}
}
cmd.Dispose();
}
cmd.Dispose();
}
}
}
In HTML
<style type="text/css">
.abc{font-size:larger;font-weight:bold}
.xyz{Display:none;visibility:hidden}
</style>
<script type="text/javascript">
function GetData(id)
- 87 -
{
var e;
color(id);
e=document.getElementById('d'+id);
if(e)
{
if(e.style.display!='block')
{
e.style.display='block';
e.style.visibility='visible';
}
else
{
e.style.display='none';
e.style.visibility='hidden';
}
}
for(var i=0;i<12;i++)
{
if(i==id)
{
i++;
}
var e1=document.getElementById('d'+i);
if(e1)
{
e1.style.display='none';
e1.style.visibility='hidden';
}
}
}
function color(id)
{
var e1;
e1=document.getElementById('h'+id);
if(e1)
{
e1.style.color='blue';
}
for(var i=0;i<12;i++)
{
if(i==id)
{
i++;
}
e2=document.getElementById('h'+i);
- 88 -
if(e2)
{
e2.style.color='black';
}
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div style="text-align: justify">
Select The Category:
<asp:DropDownList ID="DropDownList1" runat="server"
AutoPostBack="True" OnSelectedIndexChanged=
"DropDownList1_SelectedIndexChanged" >
</asp:DropDownList><br />
<asp:GridView ID="GridView1" runat="server" Width="693px"
AutoGenerateColumns="False">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="cb" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ProductId">
<ItemTemplate>
<%#Eval("ProductId")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<div id='h<%#DataBinder.Eval(Container,"RowIndex")%>'
class='abc' ondblclick='GetData (<%#DataBinder.
Eval(Container,"RowIndex")%>);' onclick='color
(<%#DataBinder.Eval(Container,"RowIndex")%>);'>
<asp:Label ID="l1"
Text='<%#Eval("ProductName")%>'
runat="server">
</asp:Label>
</div>
<div id='d<%#DataBinder.Eval(Container,"RowIndex")%>'
- 89 -
class='xyz' ondblclick='GetData(<%#DataBinder.
Eval(Container,"RowIndex")%>);' onclick='color
(<%#DataBinder.Eval(Container,"RowIndex")%>);'>
<b>Supplier Name:</b><%#Eval("CompanyName")%><br />
<b>Supplier Address:</b><%#Eval("Address")%><br />
<b>City:</b> <%#Eval("city")%><br />
<b>Phone:</b> <%#Eval("phone")%><br />
<b>Quantity per unit:</b><%#Eval("QuantityPerUnit")%><br />
<b>Units on Order:</b><%#Eval("UnitsOnOrder")%><br />
</div>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Stock">
<ItemTemplate>
<%#Eval("UnitsInStock")%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
- 90 -
FORMVIEW
Similar to DetailView
we can display only single record
In built paging
We display fields in rows
In this there is no AutoGenrate Row or columns
No Limitation, No Default Template
Command name
o Edit
o Update
o Cancel
o Delete
- 91 -
o New
o Insert
We use from view for single record operation .
No Field and columns Available
Fully customize view
It is just like form
Place FormVeiw, Add Web Config File
DetailVeiw Tasks Edit Templates ItemTemplate
o Write Empno, place LabelEditDataBinding codeEval(“empno”)
o Write Ename, place LabelEditDataBinding codeEval(“ename”)
o Write Eaddress, place LableEditDataBindincodeEval(“ename”)
o Write Esal, place LabelEditDataBinding codeEval(“esal”)
o Place LinkButtons
Edit (CommandName edit)
New (CommandName new)
Delete(CommandName delete)
EditItemTemplate
o Write Empno, place LabelEditDataBinding codeEval(“empno”)
o Write Ename, place TextboxEditDataBinding codeEval(“ename”)
o Write Eaddress, place TextboxEditDataBindincodeEval(“ename”)
o Write Esal, place TextboxEditDataBinding codeEval(“esal”)
o Place LinkButtons
Update (CommandName update)
Cancel (CommandName Cancel)
InsertItemTemplate
o Write Empno, place TextboxEditDataBinding codeEval(“empno”)
o Write Ename, place TextboxEditDataBinding codeEval(“ename”)
o Write Eaddress, place TextboxEditDataBindincodeEval(“ename”)
o Write Esal, place TextboxEditDataBinding codeEval(“esal”)
o Place LinkButtons
Save (CommandName Insert)
Cancel (CommandName Cancel)
EmptyDataTemplate //To show table if no data available
o Write No Data Available
o Add LinkButtons
Add Data to Table (CommandName new)
using System.Data.SqlClient;
- 92 -
FrmBind();
}
}
private void FrmBind()
{
SqlDataAdapter adp = new SqlDataAdapter("select * from tbemp",
ConfigurationManager.ConnectionStrings["cs"].ConnectionString);
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "delete from tbemp where empno=@eno";
cmd.Connection = con;
- 93 -
cmd.Parameters.Add("@eno", SqlDbType.Int).Value = eno;
cmd.ExecuteNonQuery();
cmd.Dispose();
FormBind();
}
protected void FormView1_ItemInserting(Sender, e)
{
Int32 eno, es;
String en, ed;
eno = Convert.ToInt32(((TextBox)(FormView1.
FindControl("textbox4"))).Text);
en= ((TextBox)(FormView1.FindControl("textbox5"))).Text;
ed= ((TextBox)(FormView1.FindControl("textbox6"))).Text;
es = Convert.ToInt32(((TextBox)(FormView1.
FindControl("textbox7"))).Text);
SqlConnection con = new SqlConnection();
con.ConnectionString = ConfigurationManager.
ConnectionStrings["cs"].ConnectionString;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "insert into tbemp
values(@eno,@en,@ed,@es)";
cmd.Connection = con;
cmd.Parameters.Add("@eno", SqlDbType.Int).Value = eno;
cmd.Parameters.Add("@es", SqlDbType.Int).Value = es;
cmd.Parameters.Add("@en",SqlDbType.VarChar, 50).Value=en;
cmd.Parameters.Add("@ed",SqlDbType.VarChar,50).Value= ed;
cmd.ExecuteNonQuery();
cmd.Dispose();
FormView1.ChangeMode(FormViewMode.ReadOnly);
FormBind();
}
protected void FormView1_ItemUpdating(sender, e)
{
Int32 eno, es;
String en, ed;
eno = Convert.ToInt32(((Label)(FormView1.
FindControl("label2"))).Text);
- 94 -
en=((TextBox)(FormView1.FindControl("textbox1"))).Text;
ed=((TextBox)(FormView1.FindControl("textbox2"))).Text;
es = Convert.ToInt32(((TextBox)(FormView1.
FindControl("textbox3"))).Text);
cmd.Connection = con;
cmd.Parameters.Add("@eno",SqlDbType.Int).Value = eno;
cmd.Parameters.Add("@es",SqlDbType.Int).Value = es;
cmd.Parameters.Add("@en",SqlDbType.VarChar,50).Value=en;
cmd.Parameters.Add("@ed",SqlDbType.VarChar,50).Value=ed;
cmd.ExecuteNonQuery();
cmd.Dispose();
FormView1.ChangeMode(FormViewMode.ReadOnly);
FormBind();
}
CLASSES
Imports System.Data
Imports System.Data.SqlClient
- 95 -
Imports System.Configuration
Namespace nsEmp
Public Class clscomfuntion
Public Shared Sub Fill_Data(ByVal qry As String,
ByVal obj As ListControl,
ByVal datatext As String,
ByVal datavalue As String)
Dim adp As New SqlDataAdapter(qry,
"DataBase=dbemp;uid=sa")
Dim ds As New DataSet
adp.Fill(ds)
obj.DataTextField = datatext
obj.DataValueField = datavalue
obj.DataSource = ds
obj.DataBind()
End Sub
End Class
- 96 -
en = "Gupta"
eadd = "Cantt"
es = "20000"
End Sub
- 97 -
End Class
Place textbox
Place three buttons
Place DropDownList
- 98 -
End Sub
- 99 -
'there is single copy of method
- 100 -
tax / 100
End Function
End Get
Set(ByVal value As Integer)
End Set
End Property
End Class
Imports System.Data.SqlClient
Imports System.Data
Imports System.Configuration
- 101 -
Namespace nsemp
Public Interface intcom
Sub Save_Rec()
Sub Update_Rec()
Sub Delete_Rec()
Function Find_rec() As DataSet
End Interface
Public Interface intemp
Property p_empno() As Int32
Property p_ename() As String
Property p_eadd() As String
Property p_esal() As String
End Interface
Public MustInherit Class clscon
Protected con As New SqlConnection
Public Sub New()
con.ConnectionString = ConfigurationManager.
ConnectionStrings("cs").ConnectionString
End Sub
End Class
- 102 -
End Sub
adp.SelectCommand.CommandType = CommandType.
StoredProcedure
Dim ds As New DataSet()
adp.Fill(ds)
Return ds
End Function
- 103 -
Value = p_eadd
cmd.Parameters.Add("@es", SqlDbType.Int).Value
= p_esal
cmd.ExecuteNonQuery()
cmd.Dispose()
con.Close()
End Sub
- 104 -
Public Class comfunction
Public Shared Sub Fill_Data(ByVal qry As String, ByVal obj As
ListControl, ByVal datatext As String, ByVal
datavalue As String)
Dim adp As New SqlDataAdapter(qry,
"DataBase=dbemployee;uid=sa")
Dim ds As New DataSet
adp.Fill(ds)
obj.DataTextField = datatext
obj.DataValueField = datavalue
obj.DataSource = ds
obj.DataBind()
End Sub
End Class
End Namespace
In Default.aspx.cs
Imports System.Data
- 105 -
obj.p_empno = Convert.ToInt32(TextBox1.Text)
obj.p_ename = TextBox2.Text
obj.p_eadd = TextBox3.Text
obj.p_esal = TextBox4.Text
obj.Update_Rec()
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
End Sub
using System.Data.SqlClient;
namespace nsemp
{
public interface intcom
{
- 106 -
void Save_Rec();
void Update_Rec();
void Delete_Rec();
DataSet Find_rec();
}
public interface intemp
{
Int32 p_empno
{
get;
set;
}
Int32 p_sal
{
get;
set;
}
String p_ename
{
get;
set;
}
String p_eadd
{
get;
set;
}
}
public abstract class clscon
{
protected SqlConnection con = new SqlConnection();
public clscon()
{
con.ConnectionString = ConfigurationManager.
ConnectionStrings["cs"].ConnectionString;
}
}
public class clsemp : clscon, intcom, intemp
{
//we define interface after comma and to impliment them right click on it n click
implement interface
- 107 -
public int p_empno
{
get
{
return eno;
}
set
{
eno = value;
}
}
- 108 -
}
#endregion
- 109 -
public void Delete_Rec()
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd = new SqlCommand("delemp", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@eno", SqlDbType.Int).Value
= p_empno;
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
}
- 110 -
In Default.aspx.cs
- 111 -
{
obj.p_empno =
Convert.ToInt32(ListBox1.SelectedIndex);
DataSet ds = new DataSet();
ds=obj.Find_rec();
DataRowView r;
r=ds.Tables[0].DefaultView[0];
TextBox1.Text = r[0].ToString();
TextBox2.Text = r[1].ToString();
TextBox3.Text = r[2].ToString();
TextBox4.Text = r[3].ToString();
}
using System.Data.SqlClient;
using System.Collections.Generic; // To create custom collection (array
of objects)
namespace nsemp
{
public interface intemp
- 112 -
{
Int32 p_empno
{
get;
set;
}
Int32 p_esal
{
get;
set;
}
String p_ename
{
get;
set;
}
String p_eadd
{
get;
set;
}
}
public class clsempprp:intemp
//right click to implement interface
{
private Int32 eno, es;
private String en, ed;
- 113 -
}
set
{
es = value;
}
}
#endregion
}
- 114 -
public void save_rec(clsempprp p)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd = new SqlCommand("insemp", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@eno", SqlDbType.Int).Value
= p.p_empno;
cmd.Parameters.Add("@en", SqlDbType.VarChar,
50).Value = p.p_ename;
cmd.Parameters.Add("@ed", SqlDbType.VarChar,
50).Value = p.p_eadd;
cmd.Parameters.Add("@es", SqlDbType.Int).Value
= p.p_esal;
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
}
public void update_rec(clsempprp p)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd = new SqlCommand("updemp", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@eno", SqlDbType.Int).Value
= p.p_empno;
cmd.Parameters.Add("@en", SqlDbType.VarChar,
50).Value = p.p_ename;
cmd.Parameters.Add("@ed", SqlDbType.VarChar,
50).Value = p.p_eadd;
cmd.Parameters.Add("@es", SqlDbType.Int).Value
= p.p_esal;
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
}
public void delete_rec(clsempprp p)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd = new SqlCommand("delemp", con);
- 115 -
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@eno", SqlDbType.Int).Value
= p.p_empno;
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
}
public List<clsempprp> Dis_rec()
{
// List is a class which is used to create custom collection
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd = new SqlCommand("dispemp",con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataReader dr;
dr = cmd.ExecuteReader();
List<clsempprp> obj = new List<clsempprp>();
while (dr.Read())
{
clsempprp k = new clsempprp();
k.p_empno = Convert.ToInt32(dr[0]);
k.p_ename = dr[1].ToString();
k.p_eadd = dr[2].ToString();
k.p_esal = Convert.ToInt32(dr[3]);
obj.Add(k);
}
dr.Close();
cmd.Dispose();
con.Close();
return obj;
}
public List<clsempprp> find_rec(Int32 eno)
{
if (con.State ==ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd = new SqlCommand("findemp",con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@eno",SqlDbType.Int).Value
=eno;
SqlDataReader dr;
dr = cmd.ExecuteReader();
List<clsempprp> obj = new List<clsempprp>();
- 116 -
if(dr.HasRows)
{
dr.Read();
clsempprp k = new clsempprp();
k.p_empno = Convert.ToInt32(dr[0]);
k.p_ename = dr[1].ToString();
k.p_eadd = dr[2].ToString();
k.p_esal = Convert.ToInt32(dr[3]);
obj.Add(k);
}
dr.Close();
cmd.Dispose();
con.Close();
return obj;
}
}
}
Place formview
DataKeyNames p_empno
Choose Data source object data source1
Enable Paging true
Place object data source1
Used with 3 tier architecture
Stateless ( after doing it’s work distry the connection)
Bind with class
Click on configure data source of object data source1
Select clsemp
Select choose method Disp_Rec
Update choose method update_Rec
Insert choose method save_Rec
Delete choose method Delete_Rec
Place List box
Choose Data source object data source2
DataField ename
DataValueempno
Place object data source1 configure data source of object data source1
Select clsemp
Select choose method Disp_Rec
Place another formview
DataKeyNames p_empno
Choose Data source object data source
Enable Paging true
Place object data sourceconfigure data source of object data source
Select clsemp
- 117 -
Select choose method Find_Rec
Update choose method update_Rec
Insert choose method save_Rec
Delete choose method Delete_Rec
Click on next
Pass eno from control listbox1
Complied classes
Reusable
Scope in multiple projects
In process ( required where the application is running) whereas exe is out process
Part of COM (component object model)
It is a software architecture which is used to design a software component
Small in size as compare to exe
- 118 -
Faster as compare to exe
DLL of .net self described. (no need to register the DLL. Just copy & run it, CLR
know in which order it will run & how it work)
Also called as Assemblies
To create it
File New Project class Library
using System.Data.SqlClient;
using System.Collections.Generic; // To create custom collection (array
of objects)
namespace nsemp
{
public interface intemp
{
Int32 p_empno
{
get;
set;
}
Int32 p_esal
{
get;
set;
}
String p_ename
{
get;
set;
}
String p_eadd
{
get;
set;
}
}
public class clsempprp:intemp
//right click to implement interface
{
private Int32 eno, es;
private String en, ed;
- 119 -
{
return eno;
}
set
{
eno = value;
}
}
#endregion
}
- 120 -
public abstract class clscon
{
protected SqlConnection con = new SqlConnection();
public clscon()
{
con.ConnectionString = ConfigurationManager.
ConnectionStrings["cs"].ConnectionString;
}
}
public class clsemp : clscon
{
public void save_rec(clsempprp p)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd = new SqlCommand("insemp", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@eno", SqlDbType.Int).Value
= p.p_empno;
cmd.Parameters.Add("@en", SqlDbType.VarChar,
50).Value = p.p_ename;
cmd.Parameters.Add("@ed", SqlDbType.VarChar,
50).Value = p.p_eadd;
cmd.Parameters.Add("@es", SqlDbType.Int).Value
= p.p_esal;
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
}
public void update_rec(clsempprp p)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd = new SqlCommand("updemp", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@eno", SqlDbType.Int).Value
= p.p_empno;
cmd.Parameters.Add("@en", SqlDbType.VarChar,
50).Value = p.p_ename;
cmd.Parameters.Add("@ed", SqlDbType.VarChar,
50).Value = p.p_eadd;
cmd.Parameters.Add("@es", SqlDbType.Int).Value
- 121 -
= p.p_esal;
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
}
public void delete_rec(clsempprp p)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd = new SqlCommand("delemp", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@eno", SqlDbType.Int).Value
= p.p_empno;
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
}
public List<clsempprp> Dis_rec()
{
// List is a class which is used to create custom collection
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd = new SqlCommand("dispemp",con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataReader dr;
dr = cmd.ExecuteReader();
List<clsempprp> obj = new List<clsempprp>();
while (dr.Read())
{
clsempprp k = new clsempprp();
k.p_empno = Convert.ToInt32(dr[0]);
k.p_ename = dr[1].ToString();
k.p_eadd = dr[2].ToString();
k.p_esal = Convert.ToInt32(dr[3]);
obj.Add(k);
}
dr.Close();
cmd.Dispose();
con.Close();
return obj;
}
public List<clsempprp> find_rec(Int32 eno)
{
- 122 -
if (con.State ==ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd = new SqlCommand("findemp",con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@eno",SqlDbType.Int).Value
=eno;
SqlDataReader dr;
dr = cmd.ExecuteReader();
List<clsempprp> obj = new List<clsempprp>();
if(dr.HasRows)
{
dr.Read();
clsempprp k = new clsempprp();
k.p_empno = Convert.ToInt32(dr[0]);
k.p_ename = dr[1].ToString();
k.p_eadd = dr[2].ToString();
k.p_esal = Convert.ToInt32(dr[3]);
obj.Add(k);
}
dr.Close();
cmd.Dispose();
con.Close();
return obj;
}
}
}
- 123 -
using System.Collections.Generic;
}
protected void Button3_Click(object sender,EventArgs e)
{
objprp.p_empno = Convert.ToInt32(TextBox1.Text);
objprp.p_esal = Convert.ToInt32(TextBox4.Text);
objprp.p_ename = TextBox2.Text;
objprp.p_eadd = TextBox1.Text;
obj.update_rec(objprp);
ListBox1.DataBind();
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";
TextBox4.Text = "";
- 124 -
TextBox1.Focus();
}
protected void Button4_Click(object sender,EventArgs e)
{
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";
TextBox4.Text = "";
TextBox1.Focus();
}
protected void ListBox1_SelectedIndexChanged(object, e)
{
List<nsemp.clsempprp> k;
k = obj.find_rec(Convert.ToInt32(ListBox1.SelectedIndex));
TextBox1.Text = k[0].p_empno.ToString();
TextBox2.Text = k[0].p_ename;
TextBox3.Text = k[0].p_eadd;
TextBox4.Text = k[0].p_esal.ToString();
}
}
MASTER PAGES
- 125 -
Extension of master page is *.master
Ek page par ek se jada master page ho sakte hai
Layout Insert table Template header,footer&Side
Add picture in project and drag it on header
Jahan design fix nahi karma Add Content Place Holder
Master Page Run Nahi hota we should add Content page
Add Adrotator tool to rotate the images when we click refresh
To bind images in Adrotater add XML file or table in database
Adrotator properties
AdvertisementFile XML File
KeywordFilter Top / bottom
XML file
- 126 -
<Keyword xmlns="">bottom</Keyword>
<Impressions xmlns="">2</Impressions>
</Ad>
</Advertisements>
Master Page
using System.Drawing;
public partial class MasterPage : System.Web.UI.MasterPage
{
public Color p_fcolor
{
get
{
return Label1.ForeColor;
}
set
{
Label1.ForeColor = value;
}
}
}
Content Page
using System.Drawing;
protected void Page_Load(object sender, EventArgs e)
{
Master.p_fcolor = Color.Red;
}
- 127 -
To Make a menu add menu toolbar from navigator and bind it with
SiteMapDataSource
Menu is a databound control we must use SiteMapDataSource to bind all type of
navigatot tools
SiteMapDataSource takes data from SiteMap file which is a XML file. No need to
bind it if there is only one SiteMap file
SiteMap File
SiteMapPath properties
Path separator >>>
Path Direction RootToCurrent/CurrentToRoot
PathLevelDisplayed -1 (to display full path)
RanderCurrentNoDeAsLink True
Menu Properties
StaticDisplayLevels 2
MaximumDynamicDisplayLevel 3
If there are more than one SiteMapFile then in web.config write
<system.web>
<siteMap enabled="true" defaultProvider="xy">
<providers>
<add name="xy" type="System.Web.XmlSiteMapProvider"
siteMapFile="Web.sitemap"/>
<add name="xz" type="System.Web.XmlSiteMapProvider"
- 128 -
siteMapFile="Web2.sitemap"/>
</providers>
</siteMap>
To bind navigator tool with second SiteMap, in SiteM apDataSource properties
Site MapProvider xz
- 129 -
// file path at client machine
Int32 i = st.LastIndexOf("\\");
st = st.Substring(i + 1);
String fp = Server.MapPath("uploads");
// uploads path
fp = fp + "\\" + st;
FileUpload1.PostedFile.SaveAs(fp);
- 130 -
Place textbox for id
Place Fileupload tool and a button
using System.Data.SqlClient;
using System.IO;
fs.Read(ar, 0, ln - 1);
fs.Close();
String fn;
fn = FileUpload1.PostedFile.FileName;
String ext;
ext = fn.Substring(fn.LastIndexOf("."));
cmd.Parameters.Add("@name", SqlDbType.Image).Value
= ar;
cmd.Parameters.Add("@ext", SqlDbType.VarChar,
50).Value = ext;
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
- 131 -
}
To retrieve it
String fn;
String a;
a = Guid.NewGuid().ToString();
fn = Server.MapPath(a + dr[2].ToString());
FileStream fs = new FileStream(fn,
FileMode.Create, FileAccess.Write);
fs.Write(ar, 0, ar.Length - 1);
fs.Close();
Image1.ImageUrl = fn;
}
dr.Close();
cmd.Dispose();
con.Close();
}
- 132 -
To remove files
protected void Button3_Click(object sender, EventArgs e)
{
DirectoryInfo dir = new
DirectoryInfo(Server.MapPath("."));
FileInfo fi = dir.GetFiles("*.gif”);
foreach(FileInfo f in fi)
{
fi.Delete(f.FullName);
}
TEMPORARY TABLES
- 133 -
We can make primary key, foreign key, expression columns
Place a GridView
r = item.NewRow();
r[1] = "Scale";
r[2] = 5;
r[3] = 7;
- 134 -
item.Rows.Add(r);
r = item.NewRow();
r[1] = "computer";
r[2] = 25000;
r[3] = 2;
item.Rows.Add(r);
r = item.NewRow();
r[1] = "Laptop";
r[2] = 70000;
r[3] = 1;
item.Rows.Add(r);
GridView1.DataSource = item;
GridView1.DataBind();
TextBox1.Text = item.Compute("Sum(iamt)",
null).ToString();
// null is for filter or we can write condition like "iamt>500"
}
Relation of Tables
protected void Page_Load(object sender, EventArgs e)
{
DataTable dep = new DataTable("tbdep");
dep.Columns.Add(new DataColumn("dno",
Type.GetType("System.Int32")));
dep.Columns.Add(new DataColumn("dname",
Type.GetType("System.String")));
DataRow r;
r = dep.NewRow();
r[0] = 1;
r[1] = "Information Technology";
dep.Rows.Add(r);
r = dep.NewRow();
r[0] = 2;
r[1] = "Civil";
dep.Rows.Add(r);
r = dep.NewRow();
r[0] = 3;
- 135 -
r[1] = "Electronics";
dep.Rows.Add(r);
r = dep.NewRow();
r[0] = 4;
r[1] = "Electrical";
dep.Rows.Add(r);
DataColumn c1 = emp.Columns[4];//Child
DataColumn c2 = dep.Columns[0];//Parent
ds.Tables[0].ParentRelations.Add(rel);
- 136 -
// Enter edno dno which is available in dep table only otherwise error
ASSEMBLIES
- 137 -
Manifest is a group of Metadata tables
Metadata tables are of two types
Custom Assembly (which we create)
Predefine
Types of Assemblies
Private Assemblies
Share Assemblies
Satellite Assemblies
DLL are Private assemblies (copy in Bin Folder)
Share Assembly
Single copy share by multiple user
Use less space on server
W can create multiple versions with the help of Strong Name
Strong Name
Uniqueness define karta hai
Multiple versions store karta hai
It uses hashing technique known as Public Key Cryptography
Multiple versions are maintain by Global Assembly Cache (GAC)
GAC is available at C:\windows\Assembly\...
Satellite Assemblies is used to create site in multiple languages(Hindi, English)
If DLL Project me add ho jaye toh woh Private hai otherwise Shared hai.
Start All Programs Ms Visual Studio 2005 Visual Studio tools Visual
Studio Command Prompt
Cd\
Cd ClassLibrary1
Cd ClassLibrary1
Cd obj
Cd Debug
Sn –k abc.snk
To write in output file
Strong Name command
In ClassLibrary class1.cs solution explorer properties AssemblyInfo.cs
In last write
[Assembly: AssemblyKeyFile(“abc.snk”)] and compile it
- 138 -
Website Add reference browse classLibrary1 obj debug DLL file
If u want to change in DLL file just make it in same file then compile it and
again give a strong name and change the name in AssemblyInfo file n then
add to GAC.
User using older version will get only old methods but new user get all
methods
To convert text file into resource file goto command prompt of .Net
C:\website\resgen abc.en-us.txt abc.en-us.resources
C:\website\resgen abc.fr-be.txt abc.fr-be.resources
C:\website\resgen abc.de-at.txt abc.de-at.resources
In a resource file
- 139 -
o we can store
Bit map
Icons
Common messages
o They are compiled
o Compressed data
In page place DropDownList
o Edit Items
Text English
Value en-us
Text French
Value fr-be
Text German
Value de-at
Add Global Application class
o Global.asax
o Ek project me ek hi ho sati hai
o To manage application ans session events
<script runat="server">
- 140 -
try
{
Thread.CurrentThread.CurrentCulture=new CultureInfo
(Request.UserLanguages[0].ToString());
}
catch
{
Thread.CurrentThread.CurrentCulture = new
CultureInfo("en-us");
}
Thread.CurrentThread.CurrentUICulture =
Thread.CurrentThread.CurrentCulture;
}
Coding
using System.Resources;
using System.Threading;
// we use threads coz we dont want to change the language of browser but the language
of current instance of browser
using System.Globalization;
// in this there is culture specfic classes
- 141 -
protected void DropDownList1_SelectedIndexChanged()
{
SetCul(DropDownList1.SelectedValue);
}
}
State Management
- 142 -
Web Form are stateless in nature which means when request goes to server pages
loose their information like registration form loose data when we come back.
State management techniques have been introduced to store page information in
server around trip.
Technology divided into two parts
o Server side state management technique
It uses resources of server to store information
Secure as the information is on server.
Slow.
o Client side state management technique
It uses resources of client to store information.
It less secure as compare to server side coz it is at client side user can
manipulate or delete it.
It is faster than server side.
4 technology included in client side state management
o Cookies
o View state
o Query string
o Hidden fields
o Control state (in Asp.Net 2.0 only)
4 technology included in server side state management
o Sessions
o Application
o Profile (in Asp.Net 2.0 only)
o Cache
To check there performance we check three things according to our requirement
o Storing capacity
o Type of information
o Scope
Cookies
o It is a small text file created on client’s machine which is used to store text as
well as number.(we can store only string value not objects)
o Two types of cookies
Impersistence cookies (temporary)
These are destroyed as soon as browser is closed
Persistence
Which expire after a specific time specified by programmer.
o Cookies store
Impersistence cookies in browser memory
- 143 -
Persistence cookies in cookies folder
(Document & settingusernamecookies)
o It can store 4096 bytes (4kb) of data internet explorer but dependent on
browser or on version.
o Initial size of a cookie is 50 bytes (In which expiry date/time is store)
o We can restrict cookies according to path
o Cookies are URL specific which means yahoo wali gmail per use nahi hogi.
o A web site can create maximum 20 cookies
o Cookies expiry date/time is of server not of client.
o A cookie can store information in form of key value pairs.
o It is used when we want to store more than one information in a cookie but we
should manage it properly with key value.
o Disadvantage
Clients can disable on his/her cookies files.
So it is not reliable which means we are not sure that it will run on
client machine or not.
Size limitation
User can manipulate
Some browsers don’t support cookies.
o Scope
Though out the website, on all the pages of website.
o Working
On every request cookies goes to server where there expiry date/time
is checked
entries of cookies expire then text file is also deleted
Subkey
No initial space
Attach with cookie
There is no expiry date/time, destroy with cookie only
NamevalueCollection class is used to read subkey value
To read subkey name we use AllKeys (array of keys)
- 144 -
o We can specify encryption mode, page size in version 2.0
o Page size by default is -1(unlimited) we can specify bytes.
o Disadvantage
Large volume of data ke case me performance is slow
o Scope
Current page only.
Query String
Hidden Field
Control State
Application
o When first user site kholta hai Application Start event fire hota hai
o Application Start event ek hi baar fire hota hai.
o When another user site kholta hai HTTP Application class ka instance
banta hai.
o Application End event tab fire hota hai jab last visitor site band karta hai,
yeh event bhi ek hi bar fire hota hai. Jab yeh fire hota hai iske baad
Application Start event fire hota hai.
o Application variable can be string as well as objects
o Scope -- Thought-out the application
o Application variable sabhi user ke liye same hota hai.
o Hit counter( to view visitors) is example of this state management
- 145 -
Session
Profile
o To set colors, themes , back ground etc different for different users.
o Two types of users
Authenticated (inka profile ASP.Net db me store hota hai)
- 146 -
Unauthenticated (inka cookies me store hota hai)
Cookies
Add new page and place two textboxes, a label and a button
- 147 -
/////////////////////////////////////////////////////////////
Response.Cookies["un"].Value = "abc";
Response.Cookies["un"].Expires =
DateTime.Now.AddHours(2);
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//Cookies with sub keys
/////////////////////////////////////////////////////////////
Response.Cookies["ui"]["un"] = "abc";
Response.Cookies["ui"]["up"] = "xyz";
Response.Cookies["ui"].Expires =
DateTime.Now.AddHours(2);
///////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
// To Read Value//
///////////////////////////////////////////////////////////
Response.Write(Request.Cookies["un"].Value);
///////////////////////////////////////////////////////////
HttpCookie d = Request.Cookies["un"];
Response.Write(d.Value);
//////////////////////////////////////////////////////////
// To read Sub Key
//////////////////////////////////////////////////////////
- 148 -
Response.Write(Request.Cookies["ui"]
["un"].ToString());
Response.Write(Request.Cookies["ui"]["up"].ToString());
/////////////////////////////////////////////////////////
HttpCookie qq = Request.Cookies("ui");
Response.Write(qq.Value["un"].ToString);
Response.Write(qq.Value["up"].ToString);
///////////////////////////////////////////////////////
// To print all the Cookies and thire value
///////////////////////////////////////////////////////
Int32 i;
for (i = 0; i < Request.Cookies.Count; i++)
{
HttpCookie a = Request.Cookies[i];
if (a.HasKeys)
{
System.Collections.Specialized.
NameValueCollection nv;
nv = a.Values;
// Array ban jayega values ka
String[] ar = a.Values.AllKeys;
// Sub keys ke name ka array
Int32 j;
for (j = 0; j < nv.Count; j++) ;
{
Response.Write("Sub Key Name:"+ar[j].
ToString()+"Value:"+nv[j].
ToString() + "<br>");
}
}
///////////////////////////////////////////////////////////
// To restrict for path
//////////////////////////////////////////////////////////
kk.Path = "admin";
// this cookie work with admn folder only
- 149 -
QueryString
Default2.aspx
- 150 -
To Open Calender in popup window
<head runat="server">
<title>Untitled Page</title>
<script language=javascript>
function abc(id)
{
window.open("default2.aspx?ab="+id,"name",
"height=350,width=350");
// To open sub Window
}
</script>
</head>
Default.aspx.cs
Default2.aspx
protected Calendar1_DayRender(object,DayRenderEventArgs)
{
//Fire for each day
e.Cell.Controls.Clear();
HtmlGenericControl lk = new HtmlGenericControl();
// Kisi bhi tag ka kaam karwa sakte hai
lk.TagName = "a";
lk.InnerText = e.Day.DayNumberText;
lk.Attributes["href"] =
String.Format("javascript:window.
opener.document.{0}.value='{1}';window.close()",
Request.QueryString["ab"].ToString(),
e.Day.Date.ToShortDateString());
- 151 -
e.Cell.Controls.Add(lk);
}
Place a label
Default2.aspx.cs
- 152 -
ViewState
using System.Data.SqlClient;
- 153 -
Panel on same screen
- 154 -
Prev Button OnClick="Btn_Prev"
Default.aspx.cs
- 155 -
Session
If u want to use one object thoughout the session use session object and if u want
to use one object only one one page use application.
Place a button
using System.Data.SqlClient;
Default2.aspx
Session State
InProcess(By default)
OutProcess
Start IIS server from control panel add remove files windows
components
- 156 -
Open new application
Select Location Http , name http://Localhost/aaa
Place Button
Default2.aspx.cs
Place label
Out Process
State Service
<system.web>
<sessionState mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
timeout="20"></sessionState>
State server uses Asp.net State Service
To start it
Control Panel Administrator Tool Services Asp.NetStateService
Right Click start
- 157 -
If we reset this service we will lost the session
SQL Server
<system.web>
<sessionState mode="SQLServer"
sqlConnectionString="server=cs;uid=sa">
</sessionState>
For ASPStateDb
Aspnet_regsql.exe –S sac –E –ssadd -sstype p
Where:
-S server
sac server name
-E current user instance
-U admin –P password (if user is sepecficed)
-ssadd session state add database
-sstype session state type
T temporary
P permanent
In TempDb data is store in ASPStateTempSessions and if we reset
SQLServerService data will lost
In ASPStateDb data is permanent.
- 158 -
Shopping Cart
Default.aspx
<ItemTemplate>
<b>Title:</b><asp:LinkButton Text=<%#Eval("bookTitle")%>
CommandName="Select"
runat="server"></asp:LinkButton><br />
<b>Author:</b><%#Eval("BookAuthor")%><br />
<asp:ImageButton ID="img1" ImageUrl="~/go_login.gif"
CommandName="Cart" runat="server" />
</ItemTemplate>
Default2.aspx
Place a DetailView
- 159 -
<Fields>
<asp:TemplateField HeaderText="Id">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%#
Eval("bookId") %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Title">
<ItemTemplate>
<asp:Label ID="Label2" runat="server"
Text='<%# Eval("bookTitle") %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Author">
<ItemTemplate>
<asp:Label ID="Label3" runat="server"
Text='<%# Eval("bookAuthor") %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Publisher">
<ItemTemplate>
<asp:Label ID="Label4" runat="server"
Text='<%# Eval("BookPub") %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Price">
<ItemTemplate>
<asp:Label ID="Label5" runat="server"
Text='<%# Eval("BookPrice") %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server"
OnClick="Button1_Click" Text="Button" />
</ItemTemplate>
</asp:TemplateField>
</Fields>
using System.Data.SqlClient;
public partial class Default2 : System.Web.UI.Page
- 160 -
{
protected void Page_Load(object sender, EventArgs e)
{
String st = "Select * from tbBook where bookId=" +
Request.QueryString["bid"].ToString();
SqlDataAdapter adp=new SqlDataAdapter(st,
ConfigurationManager.ConnectionStrings["cs"].
ConnectionString);
DataSet ds = new DataSet();
adp.Fill(ds);
DetailsView1.DataSource = ds;
DetailsView1.DataBind();
}
protected void DetailsView1_ItemCommand(object, e)
{
}
protected void Button1_Click(object , EventArgs e)
{
Response.Redirect("default3.aspx?bid=" +
((Label)(DetailsView1.FindControl("label1"))).Text);
}
}
Default3.aspx
Place GridView
- 161 -
<asp:BoundField DataField="ordQty"
HeaderText="Quantity" />
<asp:BoundField DataField="ordAmt" HeaderText="Amount"
ReadOnly="True" />
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
using System.Data.SqlClient;
public partial class Default3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["ss1"] == null)
{
DataTable tb = new DataTable("Table");
tb.Columns.Add(new DataColumn("ordId",
Type.GetType("System.Int32")));
tb.Columns.Add(new DataColumn("ordTit",
Type.GetType("System.String")));
tb.Columns.Add(new DataColumn("ordAuthor",
Type.GetType("System.String")));
tb.Columns.Add(new DataColumn("ordPub",
Type.GetType("System.String")));
tb.Columns.Add(new DataColumn("ordPrice",
Type.GetType("System.Int32")));
tb.Columns.Add(new DataColumn("ordQty",
Type.GetType("System.Int32")));
tb.Columns.Add(new DataColumn("ordAmt",
Type.GetType("System.Int32")));
tb.Columns["ordAmt"].Expression=
"ordQty*ordPrice";
Session["ss1"] = tb;
}
if (Page.IsPostBack == false)
{
String st;
st = "select * from tbbook where bookid=" +
Request.QueryString["bid"].ToString();
SqlDataAdapter adp = new SqlDataAdapter(st,
ConfigurationManager.ConnectionStrings["cs"].
ConnectionString);
DataSet ds = new DataSet();
adp.Fill(ds);
DataRowView r; // for one row
- 162 -
r = ds.Tables[0].DefaultView[0];
DataTable ab = (DataTable)(Session["ss1"]);
DataRow r1 = ab.NewRow();
r1[0] = Convert.ToInt32(r["bookId"]);
r1[1] = r["bookTitle"].ToString();
r1[2]=r["bookAuthor"].ToString();
r1[3] = r["BookPub"].ToString();
r1[4]=Convert.ToInt32(r["BookPrice"]);
r1[5] = 1;
ab.Rows.Add(r1);
GridView1.DataSource = ab;
GridView1.DataBind();
}
}
public void GrdBind()
{
GridView1.DataSource = (DataTable)(Session["ss1"]);
GridView1.DataBind();
}
protected void GridView1_RowEditing(object sender, e)
{
GridView1.EditIndex = e.NewEditIndex;
GrdBind();
}
protected void GridView1_RowUpdating(object sender, e)
{
DataTable tt = (DataTable)(Session["ss1"]);
tt.Rows[e.RowIndex][5] = Convert.ToInt32(((TextBox)
(GridView1.Rows[e.RowIndex].Cells[5].
Controls[0])).Text);
GridView1.EditIndex = -1;
GrdBind();
}
protected void GridView1_RowCancelingEdit(object, e)
{
GridView1.EditIndex = -1;
GrdBind();
}
}
- 163 -
SECURITY
Security include
1. Authorization means permission to user.
2. Authentication
Authentication of IIS
1. Basic Authentication In basic authentication user password stored into cleared
text.
2. Digest AuthenticationThis authentication is by default provided by IIS and user
password stored in encrypted form.
3. Window Integrating AuthenticationUser of window.
Authentication Types
1. Window AuthenticationIt is by default authentication.
2. Forms
(a). Forms Authentication It is customized authentication and used mostly.
3. Passport Authentication with single sign in we can login into multiple passport
Enable sites.
4. None
We can also create user and password in webconfig and xml file.
FORM AUTHENTICATION
Username
Password Button
Webconfig file
<authentication mode="Forms">
<forms name="cookie" loginUrl="login.aspx"></forms>
</authentication>
Login.aspx
using System;
- 164 -
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
}
protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox1.Text == "faisal" && TextBox2.Text == "khan")
{
FormsAuthentication.RedirectFromLoginPage
(TextBox1.Text,false);
}
else
{
Response.Write("Wrong user/password");
}
}
}
FormsAuthentication.RedirectFromLoginPage(TextBox1.Text,false)user name ko
cookie mai likhega aur redirect to default page.
Default.aspx
Label
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
- 165 -
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (User.Identity.IsAuthenticated)
{
Label1.Text = "Welcome :" + User.Identity.Name;
}
else
{
FormsAuthentication.RedirectToLoginPage();
}
}
}
Webconfig file
<authentication mode="Forms">
<forms name="cookie" loginUrl="login.aspx">
<credentials passwordFormat ="Clear">
<user name ="admin" password ="ad"/>
<user name ="admin1" password ="ad1"/>
</credentials>
</forms>
</authentication>
Login.aspx
Username
Password Button2
- 166 -
}
Specific Autherity
</system.web>
<location path ="default2.aspx">
<system.web >
<authorization >
<allow users ="admin"/>
<deny users ="*"/>
</authorization>
</system.web>
</location>
<location path ="default3.aspx">
<system.web >
<authorization >
<allow users ="admin1"/>
<deny users ="*"/>
</authorization>
</system.web>
</location>
Default.aspx
2 hyperlink button
PropertyNavigationURLDefault2.aspx
PropertyNavigationURLDefault3.aspx
- 167 -
Urole varchar(50)
Add some record eg
Uname Upass Urole
Faisal khan admin
Sachin gupta user
Charu satia admin|user
Add 2 folder in solution explorer
Adm--> default2.aspx,default3.aspx
Usr-->default4.aspx,default5.aspx
<authentication mode="Forms">
<forms name="cookie" loginUrl="login.aspx">
</forms>
</authentication>
</system.web>
<location path ="adm">
<system.web >
<authorization >
<allow roles ="admin"/>
<deny users ="*"/>
</authorization>
</system.web>
</location>
<location path ="usr">
<system.web >
<authorization >
<allow roles ="user"/>
<deny users ="*"/>
</authorization>
</system.web>
</location>
Login.aspx
- 168 -
Username
Password Button
using System.Data.SqlClient;
}
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "database=emp;uid=sa";
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from tbauth1 where uname=@u and upass=@p";
cmd.Parameters.Add("@u", SqlDbType.VarChar, 50).Value =TextBox1.Text;
cmd.Parameters.Add("@p", SqlDbType.VarChar, 50).Value =TextBox2.Text;
cmd.Connection = con;
SqlDataReader dr;
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
FormsAuthenticationTicket tkt = new
FormsAuthenticationTicket(1, TextBox1.Text,
DateTime.Now, DateTime.Now.AddMinutes(10), false,
dr[2].ToString(), FormsAuthentication.FormsCookiePath);
//Here we encrypt the ticket n stored st(ticket) and cookie name from
webconfig file into cookie or with the help of querystring passed this value
into default.aspx
string st;
st = FormsAuthentication.Encrypt(tkt);
HttpCookie ck = new
HttpCookie(FormsAuthentication.FormsCookieName, st);
- 169 -
Response.Cookies.Add(ck);
Response.Redirect("default.aspx");
}
else
{
Response.Write("wrong user/password");
}
dr.Close();
cmd.Dispose();
}
}
FormsAuthenticationTicket tkt Ticket is used for passing customise data
whatever we want.
1st Parameter is ticket version no. assign with multiple tickets.
2nd Parameter username.
3rd Parameter issued ticket datetime
4th Parameter expire time
5th Parameter cookies temp(false) or permanent(untill web browser session
expire).
6th Parameter string userdata dr[2] contain table coloumn Urole.
7th Parameter string cookies path.
How authenticate user access the file so a Add global application class
Global Application Class
Namespace System.Security.Principal contain generic principal class which is
combination of identity & roles is known as generic principal.
Select application and his event AuthenticateRequest .
Event AuthenticateRequest fire every time for user check.
HttpContextEnclupulate all http specific information about an individual http request.
- 170 -
// Code that runs on application startup
}
void Application_End(object sender, EventArgs e)
{
// Code that runs on application shutdown
}
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
}
void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started
}
void Session_End(object sender, EventArgs e)
{
// Code that runs when a session ends.
// Note: The Session_End event is raised only when the sessionstate mode
// is set to InProc in the Web.config file. If session mode is
set to StateServer
// or SQLServer, the event is not raised.
}
Default.aspx
2 Hyperlink Button
PropertyNavigationURLadm/Default2.aspx,Default3.aspx
- 171 -
PropertyNavigationURLusr/Default4.aspx,Default5.aspx
- 172 -