Se olharmos a alguns anos atras, criar um simples calendario em uma pagina web era uma tarefa no minimo chata, era necessario criar tabelas, linhas e colunas, e adicinoar hyperlink nas datas, o javascript ate poderia ajudar neste trabalho, mas ainda assim era uma tarefa chata.O asp.net possui diversos controles onde o objetivo e justamente este facilitar no desenvolvimento de paginas que necessitam desses recursos. Esta licao ira falar sobre os seguinte controles que facilitam a nossa vida:TableImageImageButtonImageMapCalendarFileUploadPanelMultiViewWizardXmlThe Table, TableRow, and TableCell Controls Antigamente, e alguns desenvolvedores ate hoje utilizam tables, tr e td html. Mas sabemos que devemos evitar o uso dessas tags html e usar divs, span e etc... Porem fica dificil fazer tudo com divs, quando se tem a necessidade de exibir dados tabulados.Estes controles do asp.net tem o mesmo objetivo da table, tr e td do html, a grande diferenca e que sao Server Controls e por isso podem ser criados e manipulados em tempo execucao.O controle table possui uma propriedade que e uma colecao do controle TableRow, e por sua vez o TableRow possui uma propriedade que e uma colecao dos controles TableCell. Todos eles herdam a classe WebControl, por isso possuem as propriedades comuns como Font, BackColor e ForeColor.Adding Rows and Cells Dynamically to a Table ControlO Visual Studio permite que voce crie seu controle Table pelo designer dele, simplesmente arrastando o controle para sua pagina e editando suas propriedades, onde tera a opcao de adicionar linhas e em seguida celulas. Porem se ira criar tabelas estaticas que nao serao manipuladas em tempo de execucao e recomendado que utilize as tabelas do html, pois terao melhor performance que os Controls Server do asp.net.O unico motivo para utilizar este controle e a necessidade de manipular em tempo de execucao, a baixo codigo explicando:Na ToolBox arraste o Controle Table para sua pagina.Va ao arquivo de code-behind e crie o evento PreInit do seu formulario.Dentro deste evento escreva um loop para criar 5 linhas em seu controle.Dentro deste loop, adicione outro loop para criar 3 celular dentro de cada linha.Dentro do ultimo loop modifique a propriedade TableCell.Tex para identificar a linha e a coluna.protected void Page_PreInit(object sender, EventArgs e){ Table1.BorderWidth = 1; for (int row = 0; row < 5; row++) { TableRow tr = new TableRow(); for (int column = 0; column < 3; column++) { TableCell tc = new TableCell(); tc.Text = string.Format("Row:{0} Cell:{1}", row, column); tc.BorderWidth = 1; tr.Cells.Add(tc); } Table1.Rows.Add(tr); }} Neste codigo repare que foi modificado a propriedade Table1.BorderWidth e BorderWidth de cada celula tambem, o resultado sera: The Image ControlO controle de image como o nome ja sugere, renderiza uma imagem no browser, mais uma vez vale lembrar que so e valido usar este controle caso queira manipular em tempo de execucao, caso contrario utilize a tag <img> do html. Alias, o controle Image do asp.net ira renderizar uma <img> quando for processado.O controle Image herda da classe WebControl e os controles ImageMap e ImageButton herdam diretamente de Image.A propriedade primaria do Image e ImageUrl que contem o caminho da imagem que sera