На какой конкретный стиль ASP.Net вы ориентируетесь? ASP.Net MVC? WebForms?
Самый быстрый и простой способ сделать что-то подобное в веб-формах (с которыми я более знаком) - это удалить элемент управления GridView на странице и привязать к нему общую коллекцию, для которой вы устанавливаете размер на основе номер, введенный в элемент управления.
Вот небольшой 10-метровый код. Создан веб-проект WebForms по умолчанию в Visual Studio 2010.
Источник веб-страницы:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<p>
<table>
<tr>
<td>Rows:</td>
<td><asp:TextBox ID="TextBox1" runat="server" />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
</td>
</tr>
<tr>
<td colspan=2>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Button" />
</td>
</tr>
</table>
</p>
</asp:Content>
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Init(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
List<string> users = new List<string>(Enumerable.Repeat(string.Empty, Int32.Parse(TextBox1.Text)));
GridView1.DataSource = users;
GridView1.DataBind();
}
protected void Button2_Click(object sender, EventArgs e)
{
var list = from GridViewRow row in GridView1.Rows
where row.RowType == DataControlRowType.DataRow
select (row.FindControl("TextBox2") as TextBox).Text;
// now do something with this list of strings
}
}
}