SIGN UP MEMBER LOGIN:    
ARTICLE

How to: Create controls in ASP.Net programmatically

Posted by Rajeev Kumar Articles | ASP.NET Programming April 30, 2010
In this article we will see how to create controls in asp.net programmatically.
Reader Level:
Download Files:
 

I am creating a row of controls dynamically which includes one dropdownlist, 12 textboxes and one checkbox as soon as user clicks on "Add New Row" button. 
Textboxes are kept for receiving inputs for the values of 12 months.

Here I am taking a panel and then I am adding the newly created table to this panel which serves as a placeholder for the table.

Inside the table I am adding these controls. Look the code it is very easy.

1.gif
 
Code Default.aspx.cs

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;

public partial class _Default : System.Web.UI.Page
{
    private int numOfColumns = 12;
    public static int ctr = 0;
    static Table table = new Table();   
    protected void Page_Load(object sender, EventArgs e)
    {
        table.ID = "table1";
        Panel1.Controls.Add(table);
    }
    protected void btnAddNewRow_Click(object sender, EventArgs e)
    {
        numOfColumns = 12;
        //Generate the Table based from the inputs
        GenerateTable(numOfColumns);
    }
    private void GenerateTable(int colsCount)
    {
        ctr++;
        // Now iterate through the table and add your controls
        TableRow row = new TableRow();
        row.ID = "row" + ctr;
        TableCell cell1 = new TableCell();
        DropDownList dl = new DropDownList(); 
        dl.ID = "DrpDwnBrand" + ctr;
        dl.AutoPostBack = false;
        dl.Width = 135;
        // Add the control to the TableCell
        cell1.Controls.Add(dl);
        // Add the TableCell to the TableRow
        row.Cells.Add(cell1);
        for (int j = 1; j <= colsCount; j++)
        {
            TableCell cell2 = new TableCell();
            TextBox tb = new TextBox();
            if (j == 1)
            {
                tb.ID = "txtJan" + ctr;
            }
            else if (j == 2)
            {
                tb.ID = "txtFeb" + ctr;
            }
            else if (j == 3)
            {
                tb.ID = "txtMar" + ctr;
            }
            else if (j == 4)
            {
                tb.ID = "txtApr" + ctr;
            }
            else if (j == 5)
            {
                tb.ID = "txtMay" + ctr;
            }
            else if (j == 6)
            {
                tb.ID = "txtJun" + ctr;
            }
            else if (j == 7)
            {
                tb.ID = "txtJul" + ctr;
            }
            else if (j == 8)
            {
                tb.ID = "txtAug" + ctr;
            }
            else if (j == 9)
            {
                tb.ID = "txtSep" + ctr;
            }
            else if (j == 10)
            {
                tb.ID = "txtOct" + ctr;
            }
            else if (j == 11)
            {
                tb.ID = "txtNov" + ctr;
            }
            else if (j == 12)
            {
                tb.ID = "txtDec" + ctr;
            }
            tb.Width = 37;
            // Add the control to the TableCell
            cell2.Controls.Add(tb);
            // Add the TableCell to the TableRow
            row.Cells.Add(cell2);
        }
        TableCell cell3 = new TableCell();
        CheckBox cb = new CheckBox();
        cb.Controls.Clear();
        cb.ID = "chkSameAll" + ctr;
        cb.AutoPostBack = false;
        cb.Width = 10;
        // Add the control to the TableCell
        cell3.Controls.Add(cb);
        // Add the TableCell to the TableRow
        row.Cells.Add(cell3);
        // Add the TableRow to the Table
        table.Rows.Add(row);
    } 
}

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <br />
        <br />
        &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
        <asp:Button ID="btnAddNewRow" runat="server" OnClick="btnAddNewRow_Click" Style="z-index: 100;
            left: 66px; position: absolute; top: 287px" Text="Add New Row" Width="145px" />
        <asp:Panel ID="Panel1" runat="server" Height="50px" Style="z-index: 102; left: 73px;
            position: absolute; top: 8px" Width="125px">
        </asp:Panel>
    </div>
    </form>
</body>
</html>

Login to add your contents and source code to this article
share this article :
post comment
 

Thanks

Posted by Rajeev Kumar Mar 29, 2011

Hello,


Thanks for sharing this code for asp.net dynamic controls. While trying your code, I discovered that it is extremely difficult to make those controls persist their state automatically. So I search on the web and found a solution here : How to create deeply nested Asp.net Dynamic Controls ?

There is an amazing online demo and the source code within.

Laurent.

Posted by laurent blachere Oct 03, 2010
Become a Sponsor
PREMIUM SPONSORS
  • ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications. Visit DynamicPDF here
    The leading .NET charting control now features PDF, Flash and Silverlight export, visualization of large datasets and more. Deliver true charting functionality to your BI, Scorecard, Presentation or Scientific apps. Download evaluation now.
Team Foundation Server Hosting
Become a Sponsor