Wednesday, 29 August 2012

gridview cell merge options


In this article write the code to merge column & cells in same data in cells. I am described how to merge cells in Gridview in ASP.NET . In this article I am add OnRowDataBound Event of gridview and use RowSpan of cells.

In this article I am connecting with sql database & in a table I have some columns like college description, college name with branch wise.. both of colleges have many branches so I merge college name Like this


on Aspx page

In aspx page write Gridview Control then add SqldataSource . Configure database with collge table and fill grid view. All data show in gridview. Add event in gridview  OnRowDataBound="GridView1_RowDataBound"

 

In aspx.cs page write this code

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {   //We're only interested in Rows that contain data
            //get a reference to the data used to databound the row
            DataRowView drv = ((DataRowView)e.Row.DataItem);
            if (previousCat == drv["Collegename"].ToString())
            {
                //If it's the same category as the previous one
                //Increment the rowspan
                if (GridView1.Rows[firstRow].Cells[0].RowSpan == 0)

                    GridView1.Rows[firstRow].Cells[0].RowSpan = 2;
                else
                    GridView1.Rows[firstRow].Cells[0].RowSpan += 1;
                //Remove the cell
                e.Row.Cells.RemoveAt(0);
            }
            else //It's a new category
            {                //Set the vertical alignment to top
                e.Row.VerticalAlign = VerticalAlign.Top;
                //Maintain the category in memory
                previousCat = drv["Collegename "].ToString();
                firstRow = e.Row.RowIndex;
            }
        }
    }
Then you run your page & Look like Merger data in a Gridview

Grid view operation tips


in this article i want to share Some Cool and useable Tips and Tricks For GridView

1. Pop-up a Confirmation box before Deleting a row in GridView

Add a template field and drop a button in it, using which the user will delete the record. In the OnClientClick event, call the confirm() function as mentioned below:

<asp:TemplateField>
      <ItemTemplate>
        <asp:Button ID="btnDel" runat="server" Text="Delete"
            CommandName="Delete" OnClientClick="return confirm('Are you sure you want to delete the record?');" />
      </ItemTemplate>
</asp:TemplateField>


2. Paging and Sorting in GridView without using Datasource control

<asp:GridView ID="gridView" OnPageIndexChanging="gridView_PageIndexChanging" 
OnSorting="gridView_Sorting" runat="server" />
private string ConvertSortDirectionToSql(SortDirection sortDireciton) {    string newSortDirection = String.Empty;
   switch (sortDirection)    {       case SortDirection.Ascending:          newSortDirection = "ASC";          break;
      case SortDirection.Descending:          newSortDirection = "DESC";          break;    }
   return newSortDirection }
protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e) {    gridView.PageIndex = e.NewPageIndex;    gridView.DataBind(); }
protected void gridView_Sorting(object sender, GridViewSortEventArgs e) {    DataTable dataTable = gridView.DataSource as DataTable;
   if (dataTable != null)    {       DataView dataView = new DataView(dataTable);       dataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);
      gridView.DataSource = dataView;       gridView.DataBind();    } }


3. Enable Disable Controls inside a GridView

Disable controls on some rows, when a certain condition is satisfied. In this snippet, we will see how to disable editing for rows that have the CategoryName as ‘Ready’. Use the following code:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if (e.Row.DataItem != null)
            {
                Label lblControl = (Label)e.Row.Cells[2].FindControl("lblCategoryName");

                if(lblControl.Text == "Ready")
                {
                    e.Row.Cells[0].Enabled = false;
                }
            }
        }
    }


4. How to Add a Row Number to the Gridview

add the following tags to <columns> section of your GridView
<asp:TemplateField>
    <ItemTemplate>
        <%# Container.DataItemIndex + 1 %>
    </ItemTemplate>
</asp:TemplateField>

5. How to programmatically hide a column in the GridView
GridView1.HeaderRow.Cells[2].Visible = false;
        foreach (GridViewRow gvr in GridView1.Rows)
        {
            gvr.Cells[2].Visible = false;
        }

6. Displaying Empty Data in a GridView

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="CategoryID"
            DataSourceID="SqlDataSource1" EmptyDataText="No data available"
            ShowFooter="true" AllowPaging="True" AllowSorting="True"
            PageSize="5" OnRowDataBound="GridView1_RowDataBound">

7. Change the color of a GridView Row based on some condition
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.DataItem != null)
        {
            DataRowView drv = (DataRowView)e.Row.DataItem;
            string catName = Convert.ToString(drv["CategoryName"]);
            if (catName.Trim() == "Confections")
                e.Row.BackColor = System.Drawing.Color.LightBlue;
        }
    }


8. Highlight an ASP.NET GridView row on Mouse Hover

<head id="Head1" runat="server">
    <title>Highlight Row on Hover</title>

    <script src="Scripts/jquery-1.3.min.js" type="text/javascript"></script>
   
    <script type="text/javascript">
        $(document).ready(function() {
            $("tr").filter(function() {
                return $('td', this).length && !$('table', this).length
            }).css({ background: "ffffff" }).hover(
                function() { $(this).css({ background: "#C1DAD7" }); },
                function() { $(this).css({ background: "#ffffff" }); }
                );
        });
    </script>
   
</head>


Output:


9. How to programmatically enable/disable a control in the GridView when in the Edit Mode

If you want to quickly take a decision whether to enable or disable a control when the user edits the row, then use the Enabled attribute and set it to a method that returns a bool value:
<asp:TemplateField HeaderText="CategoryName" SortExpression="CategoryName">
                    <EditItemTemplate>
                        <asp:TextBox ID="txtCategoryName" runat="server" Enabled='<%# EnableDisableTextBox() %>' Text='<%# Bind("CategoryName") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lblCategoryName" runat="server" Text='<%# Bind("CategoryName") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
C#
    protected bool EnableDisableTextBox()
    {
        if (1 == 1)
            return false;
    }

Tuesday, 19 June 2012

How to allow sorting with gridview header column in asp.net

Here is complete code for allow sorting in asp.net gridview:

 public SortDirection dir
    {
        get
        {
            if (ViewState["dirState"] == null)
            {  ViewState["dirState"] = SortDirection.Ascending;
            }
            return (SortDirection)ViewState["dirState"];
        }
        set
        {        ViewState["dirState"] = value;
        }

    }
        protected void gvShowRecord_Sorting(object sender, GridViewSortEventArgs e)
        {
            string sortingDirection = string.Empty;

            if (dir == SortDirection.Ascending)
            {
                dir = SortDirection.Descending;

                sortingDirection = "Desc";
            }

            else
            {
                dir = SortDirection.Ascending;
                sortingDirection = "Asc";
            }

            DataView sortedView = new DataView(BindGridOfParticipantDetail());

            sortedView.Sort = e.SortExpression + " " + sortingDirection;

            gvShowRecord.DataSource = sortedView;

            gvShowRecord.DataBind();
        }
    }


and design page require some settings  as


1. AllowSorting="True"   onsorting="gvShowRecord_Sorting"

 2. <asp:BoundField HeaderText="First Name" DataField="FirstName" SortExpression="FirstName" />


Thursday, 14 June 2012

how to create zip folder and download in asp.net


  
using ionic.zip;
 public string  SaveStreamToFile()
        {
            
             CV.Programs.Entity.ParticipantDocument participantDocument = new CV.Programs.Entity.ParticipantDocument();
            participantDocument.ParticipantId = Convert.ToInt32(Session["ParticipantId"]);
            ParticipantDocumentBLL participantDocumentBLL = new ParticipantDocumentBLL();
            DataTable _dataTable=participantDocumentBLL.GetParticipantDocument(participantDocument);
            string directoryPath = Server.MapPath("~/abc/ParticipantDOC/") +"admin"+ Session["ParticipantId"].ToString() + "" + DateTime.Now.ToString("ss");
            if (!Directory.Exists(directoryPath))
            {
                Directory.CreateDirectory(directoryPath);
                ViewState["DirName"] = directoryPath;
            }
            for (int i = 0; i < _dataTable.Rows.Count; i++)
            {
                if (Convert.ToString(_dataTable.Rows[i]["UploadedDocumentName"]) != "")
                {
                    byte[] file = null;
                    file = _dataTable.Rows[i]["UploadedDocument"] as byte[];
                    string filename = _dataTable.Rows[i]["UploadedDocumentName"].ToString();
                    string strExtenstion = Path.GetExtension(filename);
                    // Create a FileStream object to write a stream to a file
                    using (FileStream fileStream = System.IO.File.Create(directoryPath+"/" + Session["ParticipantId"] + "_"+i+"Document" + strExtenstion))
                    {
                        fileStream.Write(file, 0, file.Length);
                    }
                }
            }
            return directoryPath;
        }




        protected void DownloadAllDocuments(string dirPath)
        {


            using (MemoryStream ms = new MemoryStream())
            {
                // create new ZIP archive within prepared MemoryStream
                //Directory.CreateDirectory(Server.MapPath("/KIZUNA/ParticipantPDF/" + Session["UserLoginId"].ToString() + "_" + Session["ParticipantId"] + ".zip"));
                //ZipFile zip =ZipFile.Create(Server.MapPath("/ abc /ParticipantPDF/"+Session["UserLoginId"].ToString()+"_"+Session["ParticipantId"]+".zip"));                
                    // add some files to ZIP archive
               
                    Response.Clear();
                    Response.AddHeader("content-disposition", "filename=sample.zip");
                    Response.ContentType = MimeType(".zip");
                    //string[] allFiles = Directory.GetFiles(dirPath, "*.*", SearchOption.AllDirectories);
                    using (ZipFile zip = new ZipFile())
                    {
                        zip.AddDirectory(dirPath);
                        zip.Save(Response.OutputStream);
                    }


                    //zip.BeginUpdate();
                    //for (int i = 0; i < allFiles.Length; i++)
                    //{
                    //    zip.Add(allFiles[i].ToString());
                       
                    //}
                    //ms.WriteTo(Response.OutputStream);
                    //// clear response stream and set the response header and content type
                   
                    


                    //// write content of the MemoryStream (created ZIP archive) to the response stream
                   
                    //zip.CommitUpdate();
                    //zip.Close();
                
            }
            if (Directory.Exists(dirPath))
            {
                Directory.Delete(dirPath, true);
                //Directory.CreateDirectory(directoryPath);
                //ViewState["DirName"] = directoryPath;
            }
            if (Directory.Exists(Server.MapPath("/ abc /ParticipantPDF/" + Session["UserLoginId"].ToString() + "_" + Session["ParticipantId"] + ".zip")))
            {
                Directory.Delete(Server.MapPath("/ abc /ParticipantPDF/" + Session["UserLoginId"].ToString() + "_" + Session["ParticipantId"] + ".zip"), true);
                //Directory.CreateDirectory(directoryPath);
                //ViewState["DirName"] = directoryPath;
            }
            // close the current HTTP response and stop executing this page
            HttpContext.Current.ApplicationInstance.CompleteRequest();
            
           


        }

Wednesday, 13 June 2012

copy file from one folder to other in asp.net


 StringBuilder sb = new StringBuilder(); //  Builder to save report
           string ZipFileName = String.Format(Server.MapPath("pathfto" + DateTime.Now.ToString("yyyyMMdd") + "MyZip.zip")); //  Zip Destiny File Name
           string theDirectory = Server.MapPath("pathfrom/");     //  Folder to zip

        try
        {
            sb.Append(String.Format("Directory To Zip: {0}.<br/>", theDirectory));
            sb.Append(String.Format("Zip file: {0}.<br/>", ZipFileName));
           
            string[] allFiles = Directory.GetFiles(Server.MapPath("path"), "*.*",SearchOption.AllDirectories);   // Get all files from
            // the folder to zip

           
            foreach (string s in allFiles)
            {
                // Use static Path methods to extract only the file name from the path.
              string   fileName = System.IO.Path.GetFileName(s);
              string destFile = System.IO.Path.Combine(theDirectory, fileName);
                System.IO.File.Copy(s, destFile, true);
            }
            if (System.IO.File.Exists(ZipFileName)) //  Small piece of code
            // to delete zip file if it already exists
            {              
                System.IO.File.Delete(ZipFileName);
                sb.Append(String.Format("Deleted old Zip file: {0}.<br/>", ZipFileName));
            }

        }
        catch (Exception) { }
        }

How to create directory on server in asp.net runtime

Here is the complete code for creating new directory on server in asp.net

protected void btnCreate_Click(object sender, EventArgs e) { string directoryPath = Server.MapPath("~/") +txtDirName.Text; if (!Directory.Exists(directoryPath)) { Directory.CreateDirectory(directoryPath); lblMessage.Text = "Directory created"; } else lblMessage.Text = "Directory already exists"; }

Wednesday, 30 May 2012

find the control on page in nested master page.

How to find the control on page in nested master page.

  ContentPlaceHolder cp = this.Master.Master.FindControl("MainContent") as ContentPlaceHolder;
    TextBox tb = cp.FindControl("textbox1") as TextBox;
Contact Us:

Email:

Vinodkumar434@gmail.com,
vinodtechnosoft@gmail.com

Skype Name:

vinodtechnosoft