Principales respuestas
Agregar un registro a un gridview

Pregunta
-
Junto con saludarlos me surgio la siguiente problematica resulta que estoy trabajando con C# y necesito agregar registros a una gridview previamente cargada con registros.
Muestro imagens
si se fijan la gridview ya vienen con registros pero lo q necesito es cuando pulsen el boton agregar inserte los nuevos registros sin tocar los otros trabajo en webapplication con c#
Saludos
LatinWater!
Respuestas
-
>>pero me surgieron algunas dudas con respecto como envio mi datasource a una session siendo que cargo la gridview de esta forma?
usarias
var list = CargaGrid.LlenaGrProductosNSol(NSol);
Session["dato"] = list;
grProductos.DataSource = list; grProductos.DataBind();
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta LatinWater martes, 7 de julio de 2015 19:54
-
Lo puede Resolver gracias por la ayuda brindada en este foro.
Dejo la soluccion por si alguien la necesita
Grilla principal:
protected void MasterGridView_SelectedIndexChanging(object sender, GridViewSelectEventArgs e) { GridViewRow row = MasterGridView.Rows[e.NewSelectedIndex]; DivDatosReplicar.Visible = true; //Cargo datos para q sean replicados en la nueva solicitud //1° Llamar a la gridview para que llene los productos de la anterior solicitud int NSol = Convert.ToInt32(MasterGridView.DataKeys[e.NewSelectedIndex].Value); //Cargo la gridSecundaria de productos para ser visualizada //grProductos.DataSource = CargaGrid.LlenaGrProductosNSol(NSol); //grProductos.DataBind(); var list = CargaGrid.LlenaGrProductosNSol(NSol); Session["datos"] = list; grProductos.DataSource = list; grProductos.DataBind(); }
aca esto llamando a los registros para q se cargue la grid de productos.-
Button Agregar
if (Session["datos"] == null) { } else { var list = (List<InsReplicaProd>)Session["datos"]; InsReplicaProd item = new InsReplicaProd(); item.CodProd = "56"; item.NomProd = "Sobres CD"; item.CanSol = "2"; list.Add(item);
grProductos.DataSource = list; grProductos.DataBind(); }
Saludos
- Marcado como respuesta LatinWater martes, 7 de julio de 2015 19:52
Todas las respuestas
-
hola
para agregar registros lo realizas en una lista en memoria, en realidad en la Session
¿Como agregar renglon a gridview desde un boton?
como veras al cargar el grid mantienes en Session el datatable o lista, entonces al agregar un nueva row lo haces a esa lista en session y vinculas nuevamente con el grid
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Editado Leandro TuttiniMVP martes, 7 de julio de 2015 15:00
-
-
-
Lei la informacion desarrolle lo siguiente pero me qde frenado en este pto me borra los registros del gridview y me inserta el ultimo
protected void MasterGridView_SelectedIndexChanging(object sender, GridViewSelectEventArgs e) { GridViewRow row = MasterGridView.Rows[e.NewSelectedIndex]; DivDatosReplicar.Visible = true; //Cargo datos para q sean replicados en la nueva solicitud //1° Llamar a la gridview para que llene los productos de la anterior solicitud int NSol = Convert.ToInt32(MasterGridView.DataKeys[e.NewSelectedIndex].Value); //Cargo la gridSecundaria de productos para ser visualizada //Creamos el dataTable DataTable DT = new DataTable(); DT.Columns.Add("CodProd", Type.GetType("System.String")); DT.Columns.Add("NomProd", Type.GetType("System.String")); DT.Columns.Add("CanSol", Type.GetType("System.String")); //Guardamos la información en una variable de sesión Session["DT"] = DT; //Asignamos el DT al gridview (en este momento el DT esta vacio grProductos.DataSource = DT; grProductos.DataBind(); }
Desarrolle de esta manera per no me carga los registros
anteriormente tenia de esta forma
//Aca Cargo lo que esta en Gridview para que me muestre todos los productos //grProductos.DataSource = CargaGrid.LlenaGrProductosNSol(NSol); //grProductos.DataBind();
aca pienso q esta mi problema como envio a la session la consulta?
Button agregar el registro a la gridview
protected void BtnAgregar_Click(object sender, EventArgs e) { //Leemos el datatable DataTable DT = new DataTable(); DT = (DataTable)Session["DT"]; //Insertamos el registro DT.Rows.Add("56", "Sobres CD", "2"); //Asignamos del DT al gridview grProductos.DataSource = DT; grProductos.DataBind(); //Actualizamos el DT de la variable de sessión Session["DT"] = DT; }
Saludos
LatinWater
- Editado LatinWater martes, 7 de julio de 2015 15:25
-
hola
por el codigo entiendo tienes dos gridview, no ? seleccionas una y vas agregando en otra
si seleccionas de la primera vas a perder los datos del segundo grid ya que usas un
DataTable DT = new DataTable();
y creas una nueva instancia
-----
ademas podrias usar
DataTable DT = (DataTable)Session["DT"];
puedes definir he instanciar en la misma linea
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -
Gracias leandro por la ayuda al parecer no me detalle muy bien en la problematica.
resulta que tengo un gridview
esta es la primera gridview donde busco solicitudes de pedidos anteriores al momento de pinchar replicar me carga la segunda grilla con los productos que estan en dicho n° de solicitud
que seria esta gridview aca el usuario tendra la opcion de agregar mas productos para elevar una nueva solicitud o quitar Esta seria la GrProductos.
Saludos
LatinWater!
-
Aqui te dejo exactamente lo que necesitas, primero debes guadar tu source en una sesion que te ayude a mantener lo que ya tiene tu gridview y despues aqui te detallo como agregar row por row animo mi estimado, omite el codigo que no sea necesario, yo lo use para algunas validaciones, pero lo que ocupas esta aqui:
public void consultar_nombre_paciente()
{
try
{
DataSet ds = new DataSet();
DataSet ds_p = new DataSet();
DataRow row1;
int validar = 0;
string id_tipo = rbl_tipo_atencion.SelectedValue;
string tipo = "";
if (Session["pacientes"] == null)
{//agregar las columnas a tu source
ds_p.Tables.Add("Table1");
ds_p.Tables[0].Columns.Add("id");
ds_p.Tables[0].Columns.Add("nombre");
ds_p.Tables[0].Columns.Add("tipo");
ds_p.Tables[0].Columns.Add("id_tipo");
ds_p.Tables[0].Columns.Add("id_mun");
}
else
{//ya trae algo tu source
ds_p = (DataSet)Session["pacientes"];
}
if (ds_p.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds_p.Tables[0].Rows.Count; i++)
{
if (ds_p.Tables[0].Rows[i][0].ToString() == hf_paciente_id.Value)
{
validar = 1;
}
}
}
if (validar == 0)
{
if (id_tipo == "2")
{
tipo = "Pareja";
}
else if (id_tipo == "3")
{
tipo = "Familiar";
}
ds = cr.Consultar_nombre_paciente(int.Parse(hf_paciente_id.Value));
row1 = ds_p.Tables[0].NewRow();
row1[0] = ds.Tables[0].Rows[0][0].ToString();
row1[1] = ds.Tables[0].Rows[0][1].ToString();
row1[2] = tipo;
row1[3] = id_tipo;
row1[4] = ds.Tables[0].Rows[0][2].ToString();
ds_p.Tables[0].Rows.Add(row1);
gv_pacientes.DataSource = ds_p;
gv_pacientes.DataBind();
Session["pacientes"] = ds_p;
//ddl_mun.SelectedValue = ds_p.Tables[0].Rows[0][4].ToString();
hf_paciente_mun.Value = ds_p.Tables[0].Rows[0][4].ToString();
}
}
catch (Exception ex)
{
string error = cr.error_aplicacion();
ScriptManager.RegisterStartupScript(this, this.GetType(), "alerta", "alert('" + error + " --- " + ex.Message + "');", true);
}
}
Si mi respuesta fue útil ayudame marcándola como correcta.
- Editado PIO DEVELOPER martes, 7 de julio de 2015 18:11
- Propuesto como respuesta PIO DEVELOPER martes, 7 de julio de 2015 18:56
-
hola
>>esta es la primera gridview donde busco solicitudes de pedidos anteriores al momento de pinchar replicar me carga la segunda grilla con los productos que estan en dicho n° de solicitud
pero estas grids donde estan ubicadas ? estan ambas en la misma pagina ?
porque si seleccionas del primer grid (usando el SelectedIndexChanged) y creas el datatable (usando el new) si tenias algo previamente cargado en la session lo pierdes
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -
gracias por la ayuda brindada pero me surgieron algunas dudas con respecto como envio mi datasource a una session siendo que cargo la gridview de esta forma?
grProductos.DataSource = CargaGrid.LlenaGrProductosNSol(NSol); grProductos.DataBind();
aca cargo mi gridview desde un procedimiento almacenado?
Saludos
-
>>pero me surgieron algunas dudas con respecto como envio mi datasource a una session siendo que cargo la gridview de esta forma?
usarias
var list = CargaGrid.LlenaGrProductosNSol(NSol);
Session["dato"] = list;
grProductos.DataSource = list; grProductos.DataBind();
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta LatinWater martes, 7 de julio de 2015 19:54
-
gracias por responder agrega lineas de codigo q me habian recomendado
var list = CargaGrid.LlenaGrProductosNSol(NSol); Session["datos"] = list; grProductos.DataSource = list; grProductos.DataBind();
respondiendo a tu consulta leandro efectivamente las dos gridview estan en la misma pagina cuando se pulsa el boton en la primera grilla carga la segunda gridview de los productos ambas ubicadas en la misma pagina
cuando pincho el button agregar
me sale el siguiente error
Aca qde frenando no se me ocurre como pasar los items para que sean cargados en la gridview de productos?
Saludos
LatinWater!
-
Lo puede Resolver gracias por la ayuda brindada en este foro.
Dejo la soluccion por si alguien la necesita
Grilla principal:
protected void MasterGridView_SelectedIndexChanging(object sender, GridViewSelectEventArgs e) { GridViewRow row = MasterGridView.Rows[e.NewSelectedIndex]; DivDatosReplicar.Visible = true; //Cargo datos para q sean replicados en la nueva solicitud //1° Llamar a la gridview para que llene los productos de la anterior solicitud int NSol = Convert.ToInt32(MasterGridView.DataKeys[e.NewSelectedIndex].Value); //Cargo la gridSecundaria de productos para ser visualizada //grProductos.DataSource = CargaGrid.LlenaGrProductosNSol(NSol); //grProductos.DataBind(); var list = CargaGrid.LlenaGrProductosNSol(NSol); Session["datos"] = list; grProductos.DataSource = list; grProductos.DataBind(); }
aca esto llamando a los registros para q se cargue la grid de productos.-
Button Agregar
if (Session["datos"] == null) { } else { var list = (List<InsReplicaProd>)Session["datos"]; InsReplicaProd item = new InsReplicaProd(); item.CodProd = "56"; item.NomProd = "Sobres CD"; item.CanSol = "2"; list.Add(item);
grProductos.DataSource = list; grProductos.DataBind(); }
Saludos
- Marcado como respuesta LatinWater martes, 7 de julio de 2015 19:52