Pages

Friday 24 July 2015

Nested Gridview in ASP.NET

Introduction : Nested gridview means gridview within a gridview. this example will show you how we can do this and by clicking on parent gridview's row we will show the child gridview.

Database : For this I am using a employee table and the structure of this employee table is as follows:

CREATE TABLE [dbo].[employee](
       [id] [int] IDENTITY(1,1) NOT NULL,
       [name] [nvarchar](200) NULL,
       [designation] [nvarchar](200) NULL,
       [salary] [float] NULL,
       [manager] [int] NULL
) ON [PRIMARY]


I have inserted some dummy data to this table as - 

Design: I have designed a gridview for this and put another child gridview in parent gridview. The design of this is as below :

<asp:GridView ID="gvdetails" runat="server" Width="100%" AutoGenerateColumns="false"            onmousehover="this.row.select();" OnRowCreated="gridclass_RowCreated"
            onselectedindexchanged="gvdetails_SelectedIndexChanged">
        <Columns>
<asp:BoundField HeaderText="ID" DataField="id" HeaderStyle-Font-Bold="true" />
       <asp:BoundField HeaderText="Name" DataField="name" HeaderStyle-Font-Bold="true" />
<asp:BoundField HeaderText="Designation" DataField="designation" HeaderStyle-Font-                         Bold="true" />
<asp:BoundField HeaderText="Salary" DataField="salary" HeaderStyle-Font-Bold="true" />
       <asp:TemplateField>
          <ItemTemplate>
             <tr>
               <td colspan="12">
<asp:GridView ID="gvChildGrid" runat="server" CssClass="EU_DataTable1" AutoGenerateColumns="false" Width="100%" BackColor="Gray" Visible="false">
                                    <Columns>
                                        <asp:BoundField HeaderText="Jounior Name" DataField="name" HeaderStyle-HorizontalAlign="Center" />
                                    </Columns>
                                </asp:GridView>
                            </td>
                        </tr>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

Code Behind:
        To bind the parent gridview I have created a function and called it on the Page_Load() event of the page. The function is as follows - 

    public void bindmain()
    {
        SqlDataAdapter da = new SqlDataAdapter("select * from employee", con);
        DataTable dt = new DataTable();
        da.Fill(dt);
        gvdetails.DataSource = dt;
        gvdetails.DataBind();
    }

Now for further action I have executed some events of parent Gridview as follows : 
  1. Row_Created - This will design the row of parent gridview:

  protected void gridclass_RowCreated(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Attributes["onmouseover"] = "this.style.cursor='pointer';this.style.textDecoration='none'; this.style.background='#61CFB3'";
            e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none'; this.style.background='White'";
            e.Row.ToolTip = "Click to select row";
            e.Row.Attributes["onclick"] = this.Page.ClientScript.GetPostBackClientHyperlink(this.gvdetails, "Select$" + e.Row.RowIndex, true);
        }
    }

2. SelectedIndexChanged Event : This event will be fired when the parent gridview's row is clicked :
    protected void gvdetails_SelectedIndexChanged(object sender, EventArgs e)
    {
        int index = gvdetails.SelectedRow.RowIndex;
        string id = gvdetails.Rows[index].Cells[0].Text.Trim();
        GridView gv = (GridView)gvdetails.Rows[index].FindControl("gvChildGrid");
        if (gv.Visible == true)
        {
            gv.Visible = false;
        }
        else
        {
            SqlDataAdapter da = new SqlDataAdapter("select * from employee where manager = '" + id + "'", con);
            DataTable dt = new DataTable();
            da.Fill(dt);
            gv.DataSource = dt;
            gv.DataBind();
            gv.Visible = true;
        }
    }

Note : Put this on the page decleration part of the webpage : 

EnableEventValidation="false"

Download The Sample Here...

Safe Coding.......

Wednesday 22 July 2015

How to upload file in ASP.NET

Introduction :
This code will help you understand how to use file upload control in asp.net and the code to upload the file on specific folder path.

Code:

       string iim = DateTime.Now.ToString("ddMMyyyyHHmmss"); //prefis of file name to upload
                if (FileUpload01.HasFile)
                {
                    string f1 = Path.GetFileName(FileUpload01.PostedFile.FileName);
                    string[] xx = f1.Split('.');  // to get posted file extension
                    string a = iim + "_" + xx[1].ToString();
                    FileUpload01.SaveAs(Server.MapPath("~/FolderPath/") + a);
                }

Thursday 9 July 2015

List Box Control

Introduction :
This code will show how to use ListBox to Select/Filter items :
Design Code :
<div style="width: 100%; float: left;">
            <div style="width: 25%; float: left; margin-top: 10px;">
                <asp:ListBox ID="ListBox1" runat="server" Height="150px" Width="98%" SelectionMode="Multiple">
                    <asp:ListItem>A</asp:ListItem>
                    <asp:ListItem>B</asp:ListItem>
                    <asp:ListItem>C</asp:ListItem>
                    <asp:ListItem>D</asp:ListItem>
                    <asp:ListItem>E</asp:ListItem>
                    <asp:ListItem>F</asp:ListItem>
                </asp:ListBox>
            </div>
            <div style="width: 8%; float: left; margin: 10px;">
                <asp:Button ID="btn01" runat="server" OnClick="btn01_Click" Text=">" Style="margin: 3px 14px;" />
                <asp:Button ID="Button2" runat="server" OnClick="Button1_Click" Text=">>" Style="margin: 3px 14px;" />
                <asp:Button ID="Button3" runat="server" OnClick="Button2_Click" Text="<" Style="margin: 3px 14px;" />
                <asp:Button ID="Button4" runat="server" OnClick="Button3_Click" Text="<<" Style="margin: 3px 14px;" />
            </div>

            <div style="width: 25%; float: left; margin-top: 10px;">
                <asp:ListBox ID="ListBox2" runat="server" Height="150px" Width="98%" SelectionMode="Multiple"></asp:ListBox>
            </div>
            <asp:Label ID="lbltxt" runat="server" ForeColor="Red"></asp:Label>
        </div>


Code Behind : 

ArrayList arraylist1 = new ArrayList();
    ArrayList arraylist2 = new ArrayList();
    protected void btn01_Click(object sender, EventArgs e)
    {
        lbltxt.Visible = false;
        if (ListBox1.SelectedIndex >= 0)
        {
            for (int i = 0; i < ListBox1.Items.Count; i++)
            {
                if (ListBox1.Items[i].Selected)
                {
                    if (!arraylist1.Contains(ListBox1.Items[i]))
                    {
                        arraylist1.Add(ListBox1.Items[i]);
                    }
                }
            }
            for (int i = 0; i < arraylist1.Count; i++)
            {
                if (!ListBox2.Items.Contains(((ListItem)arraylist1[i])))
                {
                    ListBox2.Items.Add(((ListItem)arraylist1[i]));
                }
                ListBox1.Items.Remove(((ListItem)arraylist1[i]));
            }
            ListBox2.SelectedIndex = -1;
        }
        else
        {
            lbltxt.Visible = true;
            lbltxt.Text = "Please select atleast one in Listbox1 to move";
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        lbltxt.Visible = false;
        while (ListBox1.Items.Count != 0)
        {
            for (int i = 0; i < ListBox1.Items.Count; i++)
            {
                ListBox2.Items.Add(ListBox1.Items[i]);
                ListBox1.Items.Remove(ListBox1.Items[i]);
            }
        }
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        lbltxt.Visible = false;
        if (ListBox2.SelectedIndex >= 0)
        {
            for (int i = 0; i < ListBox2.Items.Count; i++)
            {
                if (ListBox2.Items[i].Selected)
                {
                    if (!arraylist2.Contains(ListBox2.Items[i]))
                    {
                        arraylist2.Add(ListBox2.Items[i]);
                    }
                }
            }
            for (int i = 0; i < arraylist2.Count; i++)
            {
                if (!ListBox1.Items.Contains(((ListItem)arraylist2[i])))
                {
                    ListBox1.Items.Add(((ListItem)arraylist2[i]));
                }
                ListBox2.Items.Remove(((ListItem)arraylist2[i]));
            }
            ListBox1.SelectedIndex = -1;
        }
        else
        {
            lbltxt.Visible = true;
            lbltxt.Text = "Please select atleast one in Listbox2 to move";
        }
    }
    protected void Button3_Click(object sender, EventArgs e)
    {
        lbltxt.Visible = false;
        while (ListBox2.Items.Count != 0)
        {
            for (int i = 0; i < ListBox2.Items.Count; i++)
            {
                ListBox1.Items.Add(ListBox2.Items[i]);
                ListBox2.Items.Remove(ListBox2.Items[i]);
            }
        }

    }