RE:Agregar fila gridview manual
Usa el ViewState...!
private DataTable EstructuraMedidas()
{
DataTable medidaTabla = new DataTable();
medidaTabla.Columns.Add("CodigoMedida", typeof(Int32));
medidaTabla.Columns.Add("DescripcionCorreccion", typeof(string));
medidaTabla.Columns.Add("FechaProgramada", typeof(string));
return medidaTabla;
}
void FilaVacia(string tipo)
{
DataTable dt = null;
dt = EstructuraMedidas();
DataRow dr;
if (ViewState["DataTemp"] == null)
{
dr = dt.NewRow();
dr[0] = 1;
dr[1] = "";
dr[2] = "";
dt.Rows.Add(dr);
ViewState["DataTemp"] = dt;
}
else
{
int n = 1;
foreach (GridViewRow row in this.grvMedidasCorrectivas.Rows)
{
//row.DataItem
TextBox txtDescripcion = (TextBox)row.FindControl("txtDescripcion");
TextBox txtFechaProgramada = (TextBox)row.FindControl("txtFechaProgramada");
dr = dt.NewRow();
dr[0] = n;
dr[1] = txtDescripcion.Text.ToString();
dr[2] = txtFechaProgramada.Text.ToString();
dt.Rows.Add(dr);
n += 1;
}
if (tipo == "A")
{
ViewState["DataTemp"] = dt;
dr = dt.NewRow();
dr[0] = n;
dr[1] = "";
dr[2] = "";
dt.Rows.Add(dr);
}
ViewState["DataTemp"] = dt;
}
this.grvMedidasCorrectivas.DataSource = ViewState["DataTemp"];
this.grvMedidasCorrectivas.DataBind();
}
protected override void Page_Load(object sender, EventArgs e)
{
try
{
if (!Page.IsPostBack)
{
FilaVacia("A");
}
}
catch (Exception ex)
{
//Response.Redirect("Error.aspx");
}
}
protected void btnAgregar_Click(object sender, EventArgs e)
{
FilaVacia("A");
}
/*El HTML Es el siguiente */
<asp:GridView ID="grvMedidasCorrectivas" runat="server" AutoGenerateColumns="False" Width="787px"
Caption="Gestión" CssClass="grid" >
<Columns>
<asp:BoundField HeaderText="Nº" DataField="CodigoMedida">
<ItemStyle Width="5%" HorizontalAlign="Center" />
</asp:BoundField>
<asp:TemplateField HeaderText="Descripción">
<ItemTemplate>
<asp:TextBox ID="txtDescripcion" runat="server" Font-Names="Arial" Font-Size="XX-Small" Text='<%# DataBinder.Eval(Container, "DataItem.DescripcionCorreccion") %>' TextMode="MultiLine" Width="550px"></asp:TextBox>
</ItemTemplate>
<ItemStyle Width="62%" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Fecha Programada" >
<ItemTemplate>
<asp:TextBox ID="txtFechaProgramada" runat="server" CssClass="textbox" Width="80px" ReadOnly="true" Text='<%# DataBinder.Eval(Container, "DataItem.FechaProgramada") %>'></asp:TextBox>
</ItemTemplate>
<ItemStyle Width="25%" />
</asp:TemplateField>
</Columns>
</asp:GridView>
Saludos...!