Sunday, February 5, 2012


For this example i have created a XML file with three fields Firstname,LastName and Location and XML file looks like mentioned below.






01<!--?xml version="1.0" standalone="yes"?-->
02<employees>
03 <details>
04 <firstname>Amit</firstname>
05 <lastname>Jain</lastname>
06 <location>Mumbai</location>
07 </details>
08 <details>
09 <firstname>User</firstname>
10 <lastname>3</lastname>
11 <location>Noida</location>
12 </details>
13 <details>
14 <firstname>User</firstname>
15 <lastname>4</lastname>
16 <location>Bangalore</location>
17 </details>
18</employees>



I have placed one gridview on aspx page and three textbox in editItemTemplate of gridview for editing, one button and three textbox in Footer Template for Inserting new records in XML file.




HTML SOURCE OF PAGE
<asp:GridView ID="gridviewXMLInsertEditDelete" runat="server" 
AutoGenerateColumns="False" ShowFooter="True" 
onRowCancelingEdit="gridviewXMLInsertEditDelete_RowCancelingEdit" 

onRowDeleting="gridviewXMLInsertEditDelete_RowDeleting" 
onRowEditing="gridviewXMLInsertEditDelete_RowEditing" 
onRowUpdating="gridviewXMLInsertEditDelete_RowUpdating" 
onRowCommand="gridviewXMLInsertEditDelete_RowCommand">
<Columns>
<asp:CommandField ShowEditButton="true" />

<asp:CommandField ShowDeleteButton="true" />
<asp:TemplateField HeaderText="First Name">
<ItemTemplate>
<asp:Label ID="lblFname" runat="server" 
           Text='<%#Eval("FirstName") %>'>

</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtFirstName" runat="server" 
             Text='<%#Bind("FirstName") %>'>

</asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:Button ID="btnInsert" runat="server" 
            Text="Insert" CommandName="InsertXMLData"/>

<asp:TextBox ID="txtFirstNameInsert" runat="server">
</asp:TextBox>
</FooterTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Last Name">
<ItemTemplate>
<asp:Label ID="lblLname" runat="server" 
           Text='<%#Eval("LastName") %>'>

</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtLastName" runat="server" 
             Text='<%#Bind("LastName") %>'>

</asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtLastNameInsert" runat="server">
</asp:TextBox>

</FooterTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Location">
<ItemTemplate>
<asp:Label ID="lblLocation" runat="server" 
           Text='<%#Eval("Location") %>'>

</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtLocation" runat="server" 
             Text='<%#Bind("Location") %>'>

</asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtLocationInsert" runat="server">
</asp:TextBox>

</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


c# CODE
01protected void Page_Load(object sender, EventArgs e)
02 {
03 if (!Page.IsPostBack)
04 BindGridView();
05 }
06 protected void BindGridView()
07 {
08 DataSet dsGridViewXMLEditDeleteUpdate = new DataSet();
09 dsGridViewXMLEditDeleteUpdate.ReadXml(Server.MapPath("~/App_Data/XMLFile.xml"));
10 gridviewXMLInsertEditDelete.DataSource = dsGridViewXMLEditDeleteUpdate;
11 gridviewXMLInsertEditDelete.DataBind();
12 gridviewXMLInsertEditDelete.ShowFooter = true;
13 }
14
15 protected void gridviewXMLInsertEditDelete_RowDeleting(object sender, GridViewDeleteEventArgs e)
16 {
17 BindGridView();
18 DataSet dsGridViewXMLDelete = (DataSet)gridviewXMLInsertEditDelete.DataSource;
19 dsGridViewXMLDelete.Tables[0].Rows[gridviewXMLInsertEditDelete.Rows[e.RowIndex].DataItemIndex].Delete();
20 dsGridViewXMLDelete.WriteXml(Server.MapPath("~/App_Data/XMLFile.xml"));
21 BindGridView();
22
23 }
24 protected void gridviewXMLInsertEditDelete_RowEditing(object sender, GridViewEditEventArgs e)
25 {
26 gridviewXMLInsertEditDelete.ShowFooter = false;
27 gridviewXMLInsertEditDelete.EditIndex = e.NewEditIndex;
28 BindGridView();
29 }
30 protected void gridviewXMLInsertEditDelete_RowUpdating(object sender, GridViewUpdateEventArgs e)
31 {
32 int index = gridviewXMLInsertEditDelete.Rows[e.RowIndex].DataItemIndex;
33 string firstName = ((TextBox)gridviewXMLInsertEditDelete.Rows[e.RowIndex].FindControl("txtFirstName")).Text;
34 string lastName = ((TextBox)gridviewXMLInsertEditDelete.Rows[e.RowIndex].FindControl("txtLastName")).Text;
35 string location = ((TextBox)gridviewXMLInsertEditDelete.Rows[e.RowIndex].FindControl("txtLocation")).Text;
36 gridviewXMLInsertEditDelete.EditIndex = -1;
37 BindGridView();
38 DataSet dsUpdateXMLFile = (DataSet)gridviewXMLInsertEditDelete.DataSource;
39 dsUpdateXMLFile.Tables[0].Rows[index]["FirstName"] = firstName;
40 dsUpdateXMLFile.Tables[0].Rows[index]["LastName"] = lastName;
41 dsUpdateXMLFile.Tables[0].Rows[index]["Location"] = location;
42 dsUpdateXMLFile.WriteXml(Server.MapPath("~/App_Data/XMLFile.xml"));
43 BindGridView();
44
45 }
46 protected void gridviewXMLInsertEditDelete_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
47 {
48 gridviewXMLInsertEditDelete.EditIndex = -1;
49 BindGridView();
50 }
51
52 protected void gridviewXMLInsertEditDelete_RowCommand(object sender, GridViewCommandEventArgs e)
53 {
54
55 if(e.CommandName == "InsertXMLData")
56 {
57 string firstname = ((TextBox)gridviewXMLInsertEditDelete.FooterRow.FindControl("txtFirstNameInsert")).Text;
58 string lastname = ((TextBox)gridviewXMLInsertEditDelete.FooterRow.FindControl("txtLastNameInsert")).Text;
59 string location = ((TextBox)gridviewXMLInsertEditDelete.FooterRow.FindControl("txtLocationInsert")).Text;
60 BindGridView();
61 DataSet dsXMLInsert = (DataSet)gridviewXMLInsertEditDelete.DataSource;
62 DataRow drInsert = dsXMLInsert.Tables[0].NewRow();
63 drInsert["FirstName"] = firstname;
64 drInsert["LastName"] = lastname;
65 drInsert["Location"] = location;
66 dsXMLInsert.Tables[0].Rows.Add(drInsert);
67 dsXMLInsert.WriteXml(Server.MapPath("~/App_Data/XMLFile.xml"));
68 BindGridView();
69 }
70 }



VB.NET CODE
01Protected Sub Page_Load(sender As Object, e As EventArgs)
02 If Not Page.IsPostBack Then
03 BindGridView()
04 End If
05End Sub
06Protected Sub BindGridView()
07 Dim dsGridViewXMLEditDeleteUpdate As New DataSet()
08 dsGridViewXMLEditDeleteUpdate.ReadXml(Server.MapPath("~/App_Data/XMLFile.xml"))
09 gridviewXMLInsertEditDelete.DataSource = dsGridViewXMLEditDeleteUpdate
10 gridviewXMLInsertEditDelete.DataBind()
11 gridviewXMLInsertEditDelete.ShowFooter = True
12End Sub
13
14Protected Sub gridviewXMLInsertEditDelete_RowDeleting(sender As Object, e As GridViewDeleteEventArgs)
15 BindGridView()
16 Dim dsGridViewXMLDelete As DataSet = DirectCast(gridviewXMLInsertEditDelete.DataSource, DataSet)
17 dsGridViewXMLDelete.Tables(0).Rows(gridviewXMLInsertEditDelete.Rows(e.RowIndex).DataItemIndex).Delete()
18 dsGridViewXMLDelete.WriteXml(Server.MapPath("~/App_Data/XMLFile.xml"))
19 BindGridView()
20
21End Sub
22Protected Sub gridviewXMLInsertEditDelete_RowEditing(sender As Object, e As GridViewEditEventArgs)
23 gridviewXMLInsertEditDelete.ShowFooter = False
24 gridviewXMLInsertEditDelete.EditIndex = e.NewEditIndex
25 BindGridView()
26End Sub
27Protected Sub gridviewXMLInsertEditDelete_RowUpdating(sender As Object, e As GridViewUpdateEventArgs)
28 Dim index As Integer = gridviewXMLInsertEditDelete.Rows(e.RowIndex).DataItemIndex
29 Dim firstName As String = DirectCast(gridviewXMLInsertEditDelete.Rows(e.RowIndex).FindControl("txtFirstName"), TextBox).Text
30 Dim lastName As String = DirectCast(gridviewXMLInsertEditDelete.Rows(e.RowIndex).FindControl("txtLastName"), TextBox).Text
31 Dim location As String = DirectCast(gridviewXMLInsertEditDelete.Rows(e.RowIndex).FindControl("txtLocation"), TextBox).Text
32 gridviewXMLInsertEditDelete.EditIndex = -1
33 BindGridView()
34 Dim dsUpdateXMLFile As DataSet = DirectCast(gridviewXMLInsertEditDelete.DataSource, DataSet)
35 dsUpdateXMLFile.Tables(0).Rows(index)("FirstName") = firstName
36 dsUpdateXMLFile.Tables(0).Rows(index)("LastName") = lastName
37 dsUpdateXMLFile.Tables(0).Rows(index)("Location") = location
38 dsUpdateXMLFile.WriteXml(Server.MapPath("~/App_Data/XMLFile.xml"))
39 BindGridView()
40
41End Sub
42Protected Sub gridviewXMLInsertEditDelete_RowCancelingEdit(sender As Object, e As GridViewCancelEditEventArgs)
43 gridviewXMLInsertEditDelete.EditIndex = -1
44 BindGridView()
45End Sub
46
47Protected Sub gridviewXMLInsertEditDelete_RowCommand(sender As Object, e As GridViewCommandEventArgs)
48
49 If e.CommandName = "InsertXMLData" Then
50 Dim firstname As String = DirectCast(gridviewXMLInsertEditDelete.FooterRow.FindControl("txtFirstNameInsert"), TextBox).Text
51 Dim lastname As String = DirectCast(gridviewXMLInsertEditDelete.FooterRow.FindControl("txtLastNameInsert"), TextBox).Text
52 Dim location As String = DirectCast(gridviewXMLInsertEditDelete.FooterRow.FindControl("txtLocationInsert"), TextBox).Text
53 BindGridView()
54 Dim dsXMLInsert As DataSet = DirectCast(gridviewXMLInsertEditDelete.DataSource, DataSet)
55 Dim drInsert As DataRow = dsXMLInsert.Tables(0).NewRow()
56 drInsert("FirstName") = firstname
57 drInsert("LastName") = lastname
58 drInsert("Location") = location
59 dsXMLInsert.Tables(0).Rows.Add(drInsert)
60 dsXMLInsert.WriteXml(Server.MapPath("~/App_Data/XMLFile.xml"))
61 BindGridView()
62 End If
63End Sub

HTML SOURCE OF ASPX PAGE
<asp:DetailsView ID="DetailsView2" runat="server"
AllowPaging="True" DataKeyNames="ID"
AutoGenerateRows="False"
DataSourceID="SqlDataSource2" Height="50px"
Width="125px"
onDataBound="DetailsView2_DataBound"
onItemUpdating="DetailsView2_ItemUpdating">
<Fields>
<asp:TemplateField HeaderText="ID">
<ItemTemplate>
<asp:Label ID="lblID" runat="server" Text='<%#Eval("ID") %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:TemplateField HeaderText="Gender">
<ItemTemplate>
<asp:Label ID="lblGender" runat="server" Text='<%#Eval("Sex") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:RadioButtonList ID="rbGender" runat="server">
<asp:ListItem>Male</asp:ListItem>
<asp:ListItem>Female</asp:ListItem>
</asp:RadioButtonList>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:Label ID="lblStatus" runat="server" Text='<%#Eval("Status") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlStatus" runat="server">
<asp:ListItem>Single</asp:ListItem>
<asp:ListItem>Married</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" />
</Fields>
</asp:DetailsView>
</div>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT [ID], [Name], [Sex], [Status] FROM [Details]"
UpdateCommand="UPDATE Details SET Name = @Name, Sex = @Sex,
MaritalStatus = @Stauts WHERE (ID = @ID)">
<UpdateParameters>
<asp:Parameter Name="Name" />
<asp:Parameter Name="Sex" />
<asp:Parameter Name="Stauts" />
<asp:Parameter Name="ID" />
</UpdateParameters>
</asp:SqlDataSource>



Now to pouplate value from database in selected index of dropdown and then set the new selected value in sqldatasource parameter write below mentioned code in DataBound and ItemUpdating Event of DetailsView respectively.



C# CODE
01protected void DetailsView2_DataBound(object sender, EventArgs e)
02 {
03 if (((DetailsView)sender).CurrentMode == DetailsViewMode.Edit)
04 {
05 DataRowView row = (DataRowView)((DetailsView)sender).DataItem;
06 RadioButtonList rblGender = (RadioButtonList)((DetailsView)sender).FindControl("rbGender");
07 DropDownList ddlStatus = (DropDownList)((DetailsView)sender).FindControl("ddlStatus");
08 rblGender.SelectedValue = row[2].ToString();
09 ddlStatus.SelectedValue = row[3].ToString();
10 }
11 }
12 protected void DetailsView2_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
13 {
14 RadioButtonList rblGender = (RadioButtonList)((DetailsView)sender).FindControl("rbGender");
15 DropDownList ddlStatus = (DropDownList)((DetailsView)sender).FindControl("ddlStatus");
16 SqlDataSource2.UpdateParameters["Sex"].DefaultValue = rblGender.SelectedValue;
17 SqlDataSource2.UpdateParameters["Stauts"].DefaultValue = ddlStatus.SelectedValue;
18 }



VB.NET CODE
01Protected Sub DetailsView2_DataBound(sender As Object, e As EventArgs)
02 If DirectCast(sender, DetailsView).CurrentMode = DetailsViewMode.Edit Then
03 Dim row As DataRowView = DirectCast(DirectCast(sender, DetailsView).DataItem, DataRowView)
04 Dim rblGender As RadioButtonList = DirectCast(DirectCast(sender, DetailsView).FindControl("rbGender"), RadioButtonList)
05 Dim ddlStatus As DropDownList = DirectCast(DirectCast(sender, DetailsView).FindControl("ddlStatus"), DropDownList)
06 rblGender.SelectedValue = row(2).ToString()
07 ddlStatus.SelectedValue = row(3).ToString()
08 End If
09End Sub
10Protected Sub DetailsView2_ItemUpdating(sender As Object, e As DetailsViewUpdateEventArgs)
11 Dim rblGender As RadioButtonList = DirectCast(DirectCast(sender, DetailsView).FindControl("rbGender"), RadioButtonList)
12 Dim ddlStatus As DropDownList = DirectCast(DirectCast(sender, DetailsView).FindControl("ddlStatus"), DropDownList)
13 SqlDataSource2.UpdateParameters("Sex").DefaultValue = rblGender.SelectedValue
14 SqlDataSource2.UpdateParameters("Stauts").DefaultValue = ddlStatus.SelectedValue
15End Sub
Set Session Timeout in Asp.Net using web.config and IIS
Set Or Manage Session TimeOut In Asp.Net Using Web.Config and IIS



In this post i'm explaining how to set or increase session timeout value in web.config or IIS in Asp.Net.






1. Set session timeout in IIS.



Open IIS manager by typing inetmgr in Start > run in windows.



Right click on websites > Select Properties.











Go to ASP.NET tab, Click on Edit Configuration.




Increase Session TimeOut In asp.Net web.config


Click on State Management Tab, Set Session TimeOut value (In Minutes).





2. Set Session TimeOut in Web.Config



We can set session timeout in SessionState section of web.config file as mentioned below, timeout value is in minutes.




<system.web>
<sessionState mode="InProc" cookieless="false" timeout="15">
</sessionState>
</system.web>


3. Set session timeout in Global.asax




void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started
Session.Timeout = 15;
}


CSS StyleSheet
01.BarIndicatorweak
02{
03 color:Red;
04 background-color:Red;
05}
06.BarIndicatoraverage
07{
08 color:Blue;
09 background-color:Blue;
10}
11.BarIndicatorgood
12{
13 color:Green;
14 background-color:Green;
15}
16
17.BarBorder
18{
19 border-style:solid;
20 border-width:1px;
21 padding:2px 2px 2px 2px;
22 width:200px;
23 vertical-align:middle;
24}



Now configure the passwordstrength control as shown below.



<form id="form1" runat="server">
<div>
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" 
                          runat="server">

</asp:ToolkitScriptManager>

<asp:TextBox ID="TextBox1" runat="server" 
             TextMode="Password">
</asp:TextBox>

        <br />
<asp:PasswordStrength ID="PasswordStrength1" 
                      runat="server" 
         TargetControlID="TextBox1" 
         RequiresUpperAndLowerCaseCharacters="true"

         MinimumNumericCharacters="1" 
         MinimumSymbolCharacters="1" 
         MinimumUpperCaseCharacters="1" 
         PreferredPasswordLength="8"
         DisplayPosition="RightSide" 
         StrengthIndicatorType="Text">

</asp:PasswordStrength>
        <br />
        <br />
<asp:TextBox ID="TextBox2" runat="server" 
             TextMode="Password">

</asp:TextBox>
<asp:PasswordStrength ID="PasswordStrength2" 
                      runat="server" 
        TargetControlID="TextBox2" 
        RequiresUpperAndLowerCaseCharacters="true"

        MinimumNumericCharacters="1" 
        MinimumSymbolCharacters="1" 
        MinimumUpperCaseCharacters="1" 
        PreferredPasswordLength="8"
        DisplayPosition="RightSide" 
        StrengthIndicatorType="BarIndicator" 
        BarBorderCssClass="BarBorder" 

StrengthStyles="BarIndicatorweak;BarIndicatoraverage;BarIndicatorgood;">
</asp:PasswordStrength>
    </div>
    </form>
step 1.

First of all we need to create a licence agreement file, for this open wordpad and type your licence agreement text and save it as licence.rtf.



Add this file in your project in solution explorer by select add existing item menu.





Step 2.


Right click on your setup project and select View > File System.




license agreement in visual studio setupproject


Step 3.


Right click on Application folder and select Add > File.



Browse to licence.rtf we added to solution in step 1.



Add license.rtf file


Step 4.


Right click on setup project in solution explorer and select View > User Interface.




UserInterface in setupproject


Step 5.


Right click on Start and select Add Dialog.



Add dialog in setup project


Select Licence agreement and click on OK.



License agreement dialog in setup project


Move it Up by right clicking and selecting Move Up to put it on the top to show up when setup starts.



Step 6.



Select Licence Agreement dialog in start group and open it's property window by pressing F4 key.







Click on Browse in LicenceFile property and select licence.rtf file from Application Folder and click on OK.



add licence.rtf to license agreement dialog


Save and build the setup project and licence agreement dialog will launch when you run setup.exe (as shown below).





HTML SOURCE OF THE PAGE
<form id="form1" runat="server">

<div>
<asp:GridView ID="GridView1" runat="server" 
              AllowPaging="True" 
              AutoGenerateColumns="False" 
              DataKeyNames="CustomerID" 
              DataSourceID="SqlDataSource1" 

onselectedindexchanged="GridView1_SelectedIndexChanged">
<RowStyle VerticalAlign="Top" />
<Columns>
<asp:BoundField DataField="CustomerID" 
                HeaderText="CustomerID" 
                ReadOnly="True" 
                SortExpression="CustomerID" />

<asp:BoundField DataField="CompanyName" 
                HeaderText="CompanyName" 
                SortExpression="CompanyName" />
                
<asp:CommandField ShowSelectButton="True" 
                  SelectText="Show Details"/>

               
<asp:TemplateField>
<ItemTemplate>
<asp:GridView ID="GridView2" runat="server" 
              AutoGenerateColumns="False" 
              DataKeyNames="OrderID" 
              DataSourceID="SqlDataSource2" 
              Visible="false">

<Columns>
<asp:BoundField DataField="OrderID" 
                HeaderText="OrderID" 
                InsertVisible="False" 
                ReadOnly="True" 
                SortExpression="OrderID" />

<asp:BoundField DataField="OrderDate" 
                HeaderText="OrderDate" 
                SortExpression="OrderDate" />
</Columns>
</asp:GridView>

</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

<asp:SqlDataSource ID="SqlDataSource1" 
                   runat="server" 

ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" 
SelectCommand="SELECT [CustomerID], [CompanyName] 
               FROM [Customers]">
</asp:SqlDataSource>

<asp:SqlDataSource ID="SqlDataSource2" 
                   runat="server" 

ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" 
SelectCommand="SELECT [OrderID], [OrderDate] 
               FROM [Orders] 
               WHERE ([CustomerID] = @CustomerID)">
<SelectParameters>
<asp:Parameter Name="CustomerID" Type="String"/>

</SelectParameters>
</asp:SqlDataSource>
</div>
</form>


Now generate SelectedIndexChanged event for parent gridview (GridView1) and write code mentioned below.




C# CODE BEHIND


1protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
2 {
3 foreach (GridViewRow gvRow in GridView1.Rows)
4 {
5 gvRow.FindControl("GridView2").Visible = false;
6 }
7 SqlDataSource2.SelectParameters[0].DefaultValue = GridView1.SelectedDataKey[0].ToString();
8 GridView1.SelectedRow.FindControl("GridView2").Visible = true;
9 }





VB.NET CODE BEHIND


1Protected Sub GridView1_SelectedIndexChanged(sender As Object, e As EventArgs)
2 For Each gvRow As GridViewRow In GridView1.Rows
3 gvRow.FindControl("GridView2").Visible = False
4 Next
5 SqlDataSource2.SelectParameters(0).DefaultValue = GridView1.SelectedDataKey(0).ToString()
6 GridView1.SelectedRow.FindControl("GridView2").Visible = True
7End Sub