Showing posts with label DetailsView. Show all posts
Showing posts with label DetailsView. Show all posts
0

Create Export DetailsView To PDF In Asp.Net

In this example i'm explaining how to Create Generate Or Export DetailsView To Pdf In Asp.Net Using C# And VB.Net.
I have used iTextsharp for this sample, populate detailsview from database and write code to create pdf from Detailsview Or GridView in Click Event of button.

Create Export DetailsView To PDF


HTML SOURCE
   1:  <asp:DetailsView ID="dvExport" runat="server" 
   2:                   AutoGenerateRows="False" 
   3:                   DataSourceID="SqlDataSource1" 
   4:                   AllowPaging="True">
   5:  <Fields>
   6:  <asp:BoundField DataField="ID" HeaderText="ID"/>
   7:  <asp:BoundField DataField="Name" HeaderText="Name"/>
   8:  <asp:BoundField DataField="Location" 
   9:                  HeaderText="Location"/>
  10:  </Fields>
  11:  </asp:DetailsView>
  12:   
  13:  <asp:SqlDataSource ID="SqlDataSource1" 
  14:                     runat="server" 
  15:                     ConnectionString
  16:  ="<%$ ConnectionStrings:ConnectionString %>" 
  17:  SelectCommand="SELECT [ID], [Name], [Location] 
  18:                 FROM [Test]">
  19:  </asp:SqlDataSource>
  20:   
  21:  <asp:Button ID="btnCreatePdf" runat="server" 
  22:              Text="Create PDF From DetailsView" 
  23:              onclick="btnCreatePdf_Click"/>

C#
using System;
using iTextSharp.text;
using iTextSharp.text.pdf;
protected void btnCreatePdf_Click(object sender, EventArgs e)
    {
        int rows = dvExport.Rows.Count;
        int columns = dvExport.Rows[0].Cells.Count;
        int pdfTableRows = rows + 3;
        iTextSharp.text.Table PdfTable = new iTextSharp.text.Table(2, pdfTableRows);
        PdfTable.BorderWidth = 1;
        PdfTable.BorderColor = new Color(0, 0, 255);
        PdfTable.Cellpadding = 5;
        PdfTable.Cellspacing = 5;
        Cell c1 = new Cell("Export Or Create PDF From DetailsView In Asp.Net");
        c1.Header = true;
        c1.Colspan = 2;
        PdfTable.AddCell(c1);
        Cell c2 = new Cell("By CsharpAspNetArticles.com");
        c2.Colspan = 2;
        PdfTable.AddCell(c2);
        
        for (int rowCounter = 0; rowCounter < rows; rowCounter++)
        {
            for (int columnCounter = 0; columnCounter < columns; columnCounter++)
            {
                string strValue = dvExport.Rows[rowCounter].Cells[columnCounter].Text;
                PdfTable.AddCell(strValue);
            }
        }
        Document Doc = new Document();
        PdfWriter.GetInstance(Doc, Response.OutputStream);
        Doc.Open();
        Doc.Add(PdfTable);
        Doc.Close();
        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", "attachment; filename=CsharpAspNetArticles.pdf");
        Response.End();
    }
VB.NET
Imports iTextSharp.text
Imports iTextSharp.text.pdf

Protected Sub btnCreatePdf_Click(sender As Object, e As EventArgs)
 Dim rows As Integer = dvExport.Rows.Count
 Dim columns As Integer = dvExport.Rows(0).Cells.Count
 Dim pdfTableRows As Integer = rows + 3
 Dim PdfTable As New iTextSharp.text.Table(2, pdfTableRows)
 PdfTable.BorderWidth = 1
 PdfTable.BorderColor = New Color(0, 0, 255)
 PdfTable.Cellpadding = 5
 PdfTable.Cellspacing = 5
 Dim c1 As New Cell("Export Or Create PDF From DetailsView In Asp.Net")
 c1.Header = True
 c1.Colspan = 2
 PdfTable.AddCell(c1)
 Dim c2 As New Cell("By CsharpAspNetArticles.com")
 c2.Colspan = 2
 PdfTable.AddCell(c2)

 For rowCounter As Integer = 0 To rows - 1
  For columnCounter As Integer = 0 To columns - 1
   Dim strValue As String = dvExport.Rows(rowCounter).Cells(columnCounter).Text
   PdfTable.AddCell(strValue)
  Next
 Next
 Dim Doc As New Document()
 PdfWriter.GetInstance(Doc, Response.OutputStream)
 Doc.Open()
 Doc.Add(PdfTable)
 Doc.Close()
 Response.ContentType = "application/pdf"
 Response.AddHeader("content-disposition", "attachment; filename=CsharpAspNetArticles.pdf")
 Response.[End]()
End Sub

Download Sample Code

0

DropDownList In DetailsView EditItemTemplate

DropDownList And RadioButtonList In EditItemTemplate Of DetailsView to Edit and Update In Asp.Net.

DropDownList In EditItemTemplate of DetailsView
In This Example i'm going to explain how to put dropdownlist and radiobutton control in EditItemTemplate of DetailsView and Edit or Update Records of DetailsView in asp.net.

For this i have used SqlDataSource To fetch records from database and populate and update detailsview.

We need to write code in DataBound And ItemUpdating Events of Detailsview to get the selected value in dropdownlist from database when edit or update button is pressed.



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
protected void DetailsView2_DataBound(object sender, EventArgs e)
    {
        if (((DetailsView)sender).CurrentMode == DetailsViewMode.Edit)
        {
                DataRowView row = (DataRowView)((DetailsView)sender).DataItem;
                RadioButtonList rblGender = (RadioButtonList)((DetailsView)sender).FindControl("rbGender");
                DropDownList ddlStatus = (DropDownList)((DetailsView)sender).FindControl("ddlStatus");
                rblGender.SelectedValue = row[2].ToString();
                ddlStatus.SelectedValue = row[3].ToString();
        }
    }
    protected void DetailsView2_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
    {
        RadioButtonList rblGender = (RadioButtonList)((DetailsView)sender).FindControl("rbGender");
        DropDownList ddlStatus = (DropDownList)((DetailsView)sender).FindControl("ddlStatus");
        SqlDataSource2.UpdateParameters["Sex"].DefaultValue = rblGender.SelectedValue;
        SqlDataSource2.UpdateParameters["Stauts"].DefaultValue = ddlStatus.SelectedValue;
    }

VB.NET CODE
Protected Sub DetailsView2_DataBound(sender As Object, e As EventArgs)
 If DirectCast(sender, DetailsView).CurrentMode = DetailsViewMode.Edit Then
  Dim row As DataRowView = DirectCast(DirectCast(sender, DetailsView).DataItem, DataRowView)
  Dim rblGender As RadioButtonList = DirectCast(DirectCast(sender, DetailsView).FindControl("rbGender"), RadioButtonList)
  Dim ddlStatus As DropDownList = DirectCast(DirectCast(sender, DetailsView).FindControl("ddlStatus"), DropDownList)
  rblGender.SelectedValue = row(2).ToString()
  ddlStatus.SelectedValue = row(3).ToString()
 End If
End Sub
Protected Sub DetailsView2_ItemUpdating(sender As Object, e As DetailsViewUpdateEventArgs)
 Dim rblGender As RadioButtonList = DirectCast(DirectCast(sender, DetailsView).FindControl("rbGender"), RadioButtonList)
 Dim ddlStatus As DropDownList = DirectCast(DirectCast(sender, DetailsView).FindControl("ddlStatus"), DropDownList)
 SqlDataSource2.UpdateParameters("Sex").DefaultValue = rblGender.SelectedValue
 SqlDataSource2.UpdateParameters("Stauts").DefaultValue = ddlStatus.SelectedValue
End Sub

Build and run the application.

Download Sample Code


5

Change Mode Of DetailsView FormView From Default Mode Insert

Change Mode Of DetailsView FormView From Default Mode set to Insert If you have a DetailsView or FormView on your aspx page and set it's Default mode to Insert than after record insertion it's mode can be changed to default mode by writing following code in ItemInserted Event

protected void DetailsView1_ItemInserted
(object sender, DetailsViewInsertedEventArgs e)
{
DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);
}


But this code doesn't work , reason being DefaultMode is applied after the call to change the mode , to get it working or to get the mode changed, u need to write code like this
protected void DetailsView1_ItemInserted
(object sender, DetailsViewInsertedEventArgs e)
{
e.KeepInInsertMode = true;
DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);

}


Now mode will be changed , similarly you can change the mode to edit.

13

Populate DetailsView From GridView Select DataKeyNames

Here i'm explaining how to Populate DetailsView From GridView In Asp.Net based on selection of a record in GridView using Multiple DataKeyNames

Populate multiple detailsview from gridview select
In this example GridView is populated from a table called Website using SqlDataSource.

I have defined multiple(3) comma separated DataKeyNames Property in GridView source.

These DataKeyNames properties will be used to fetch the record related to respective DataKey from 3 tables to populate 3 DetailsViews.

HTML SOURCE OF THE PAGE
   1:  <form id="form1" runat="server">
   2:  <div>
   3:  <asp:GridView ID="GridView1" runat="server" 
   4:                DataKeyNames="Record,ResponseID,Source_id"  
   5:                AutoGenerateColumns="False" 
   6:                DataSourceID="SqlDataSource1" 
   7:                OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
   8:  <Columns>
   9:  <asp:CommandField ShowSelectButton="True" />
  10:  <asp:BoundField DataField="Record" HeaderText="Record"/>
  11:  <asp:BoundField DataField="ResponseID" HeaderText="ResponseID"/>
  12:  <asp:BoundField DataField="Source_id" HeaderText="Source_id"/>
  13:  <asp:BoundField DataField="Remarks" HeaderText="Remarks"/>
  14:  </Columns>
  15:  </asp:GridView>
  16:   
  17:  <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
  18:  ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
  19:  SelectCommand="Select Record, App_id as ResponseID, 
  20:                 Source_id,Remarks from Website">
  21:  </asp:SqlDataSource>
  22:   
  23:  <table><tr><td>
  24:  <asp:DetailsView ID="DetailsView1" runat="server" 
  25:                   DataKeyNames="Record" AutoGenerateRows="False"
  26:                   DataSourceID="SqlDataSource2">
  27:  <Fields>
  28:  <asp:BoundField DataField="Record" HeaderText="Record"/>
  29:  <asp:BoundField DataField="Name" HeaderText="Name"/>
  30:  </Fields>
  31:  </asp:DetailsView>
  32:   
  33:  <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
  34:  ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
  35:  SelectCommand="SELECT [Record], [Name] FROM 
  36:                 [Applications] WHERE ([Record] = @Record)">
  37:  <SelectParameters>
  38:  <asp:ControlParameter ControlID="GridView1" Name="Record" 
  39:                        PropertyName="SelectedValue"
  40:                        Type="String" />
  41:  </SelectParameters>
  42:  </asp:SqlDataSource></td>
  43:   
  44:  <td>
  45:  <asp:DetailsView ID="DetailsView2" runat="server" 
  46:                   DataKeyNames="App_id" AutoGenerateRows="False" 
  47:                   DataSourceID="SqlDataSource3">
  48:  <Fields>
  49:  <asp:BoundField DataField="App_id" HeaderText="App_id"/>
  50:  <asp:BoundField DataField="Details" HeaderText="Details"/>
  51:  </Fields>
  52:  </asp:DetailsView>
  53:   
  54:  <asp:SqlDataSource ID="SqlDataSource3" runat="server" 
  55:  ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
  56:  SelectCommand="SELECT [App_id], [Details] FROM [Response] 
  57:                 WHERE ([App_id] = @ResponseID)">
  58:  <SelectParameters>
  59:  <asp:ControlParameter ControlID="GridView1" 
  60:                        Name="ResponseID" 
  61:                        PropertyName="SelectedValue"
  62:                        Type="String" />
  63:  </SelectParameters>
  64:  </asp:SqlDataSource></td>
  65:          
  66:  <td>
  67:  <asp:DetailsView ID="DetailsView3" runat="server" 
  68:                   DataKeyNames="Source_id" 
  69:                   AutoGenerateRows="False" 
  70:                   DataSourceID="SqlDataSource4">
  71:  <Fields>
  72:  <asp:BoundField DataField="Source_ID" HeaderText="Source_ID"/>
  73:  <asp:BoundField DataField="LastName" HeaderText="LastName"/>
  74:  </Fields>
  75:  </asp:DetailsView>
  76:   
  77:  <asp:SqlDataSource ID="SqlDataSource4" runat="server" 
  78:  ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
  79:  SelectCommand="SELECT [Source_ID], [LastName] FROM [advt] 
  80:                 WHERE ([Source_ID] = @Source_ID)">
  81:  <SelectParameters>
  82:  <asp:ControlParameter ControlID="GridView1" 
  83:                        Name="Source_ID" 
  84:                        PropertyName="SelectedValue"
  85:                        Type="String" />
  86:  </SelectParameters>
  87:  </asp:SqlDataSource></td>
  88:  </tr></table>
  89:  </div>
  90:  </form>

Write below mentioned code in SelectedIndexChanged Event of Gridveiw.

C# CODE
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string App_id = GridView1.DataKeys[GridView1.SelectedIndex]["ResponseID"].ToString();
        SqlDataSource3.SelectParameters.Clear();
        SqlDataSource3.SelectParameters.Add("ResponseID", App_id);
        DetailsView2.DataBind();

        string Source_id = GridView1.DataKeys[GridView1.SelectedIndex]["Source_id"].ToString();
        SqlDataSource4.SelectParameters.Clear();
        SqlDataSource4.SelectParameters.Add("Source_id", Source_id);
        DetailsView3.DataBind();
    }


VB.NET CODE
Protected Sub GridView1_SelectedIndexChanged(sender As Object, e As EventArgs)
 Dim App_id As String = GridView1.DataKeys(GridView1.SelectedIndex)("ResponseID").ToString()
 SqlDataSource3.SelectParameters.Clear()
 SqlDataSource3.SelectParameters.Add("ResponseID", App_id)
 DetailsView2.DataBind()

 Dim Source_id As String = GridView1.DataKeys(GridView1.SelectedIndex)("Source_id").ToString()
 SqlDataSource4.SelectParameters.Clear()
 SqlDataSource4.SelectParameters.Add("Source_id", Source_id)
 DetailsView3.DataBind()
End Sub

Build and run the code.

Download Sample Code



13

Populate DropdownList In SelectedIndexChanged DetailsView GridView

In this example i am explaining how to Bind Populate Second DropDownList In SelectedIndexChanged Event Based On Selection Of Other First Dropdown In Detailsview Gridview ASP.NET and save the record in database, in this example i've added two DropDowns in DetailsView control using TemplateField and InsertItemTemplate

The Second DropDown (ddlProducts) is getting populated based on Category selected in Category DropDown , For this i've used SelectedIndexChanged event and findControl method to find the control and sqldataSource is used as datasource for the dropdowns and DetailView


HTML source of the aspx page is
<asp:DetailsView ID="dView" runat="server" AutoGenerateRows="False" 
                 DataSourceID="SqlDataSourceDetails"
                 DefaultMode="Insert" Height="50px" Width="125px">
<Fields>
<asp:TemplateField HeaderText="Category">
<InsertItemTemplate>
<asp:DropDownList ID="ddlCategory" runat="server" AutoPostBack="true"
                  DataSourceID="SqlDataSourceCategory" 
                  DataTextField="Category" DataValueField="Category" 
        OnSelectedIndexChanged="ddlCategory_SelectedIndexChanged" >
</asp:DropDownList>  
<asp:SqlDataSource ID="SqlDataSourceCategory" runat="server" 
ConnectionString="<%$ ConnectionStrings:dvConnectionString %>"
SelectCommand="SELECT DISTINCT [Category] FROM [Products]">
</asp:SqlDataSource>
</InsertItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Product">
<InsertItemTemplate>
<asp:DropDownList ID="ddlProducts" runat="server" 
                  DataSourceID="SqlDataSourceProd"
                  DataTextField="Product" DataValueField="Product">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSourceProd" runat="server" 
ConnectionString="<%$ ConnectionStrings:dvConnectionString %>"
SelectCommand="SELECT [Product] FROM [Products] 
WHERE ([Category] = @Category)" 
OnSelecting="SqlDataSourceProd_Selecting">
<SelectParameters>
<asp:Parameter Name="Category" Type="String" />
</SelectParameters>
</asp:SqlDataSource> 
</InsertItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Description">
<InsertItemTemplate>
<asp:TextBox runat="server" ID="txtDes" Text='<%#Bind("Des") %>'>
</asp:TextBox>
</InsertItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowInsertButton="True" />
</Fields>
</asp:DetailsView>
        
<asp:SqlDataSource ID="SqlDataSourceDetails" runat="server" 
ConnectionString="<%$ ConnectionStrings:dvConnectionString %>"
SelectCommand="SELECT * FROM [Products]" 
InsertCommand="INSERT INTO Products(Category, Product, Des) 
               VALUES (@Category,@Product,@Des)" 
OnInserting="SqlDataSourceDetails_Inserting" >
<InsertParameters>
<asp:Parameter Name="Category" />
<asp:Parameter Name="Product" />
<asp:Parameter Name="Des" />
</InsertParameters>
</asp:SqlDataSource>

C# code behind
protected void ddlCategory_SelectedIndexChanged
                   (object sender, EventArgs e)
{
 DropDownList ddlProducts = 
     (DropDownList)dView.FindControl("ddlProducts");

        if (ddlProducts != null)
        {
            ddlProducts.DataBind();
        }
}

protected void SqlDataSourceProd_Selecting
    (object sender, SqlDataSourceSelectingEventArgs e)
{
  DropDownList ddlCategory = 
      (DropDownList)dView.FindControl("ddlCategory");

        if (ddlCategory != null)
        {
            e.Command.Parameters["@Category"].Value = ddlCategory.SelectedValue;
        }
}

protected void SqlDataSourceDetails_Inserting
       (object sender, SqlDataSourceCommandEventArgs e)
{
 DropDownList ddlCat = 
         (DropDownList)dView.FindControl("ddlCategory");
 e.Command.Parameters["@Category"].Value = ddlCat.SelectedValue;
 DropDownList ddlProd = 
     (DropDownList)dView.FindControl("ddlProducts");
e.Command.Parameters["@Product"].Value = ddlProd.SelectedValue;
}

VB.NET Code behind
Protected Sub ddlCategory_SelectedIndexChanged
(ByVal sender As Object, ByVal e As EventArgs)

Dim ddlProducts As DropDownList = 
DirectCast(dView.FindControl("ddlProducts"), DropDownList)
    
    If ddlProducts IsNot Nothing Then
        ddlProducts.DataBind()
    End If
End Sub

Protected Sub SqlDataSourceProd_Selecting
(ByVal sender As Object, 
ByVal e As SqlDataSourceSelectingEventArgs)

Dim ddlCategory As DropDownList = 
DirectCast(dView.FindControl("ddlCategory"), DropDownList)
    
    If ddlCategory IsNot Nothing Then
    e.Command.Parameters("@Category").Value = 
                     ddlCategory.SelectedValue
    End If
End Sub

Download the code from here







Find More Articles