Foros del Web » Programación para mayores de 30 ;) » .NET »

Combo selected

Estas en el tema de Combo selected en el foro de .NET en Foros del Web. Hola me gustaria saber como hago para que cuando un usuario meta un registro nuevo y este se cargue en un combo ke tengo creado, ...
  #1 (permalink)  
Antiguo 26/04/2005, 04:13
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
Combo selected

Hola me gustaria saber como hago para que cuando un usuario meta un registro nuevo y este se cargue en un combo ke tengo creado, el registro nuevo salga seleccionado.
Yo cargo el combo asi:

ArrayList comb = new ArrayList();
comb.Add("Selecciona: ");
while (reader.Read())
{
comb.Add(reader[1].ToString());
}
if (ComboClientes.Items.Count==0)
{
for (int z=0;z<comb.Count;z++)
{
ComboClientes.Items.Add(comb[z].ToString());

}
}

gracias.
  #2 (permalink)  
Antiguo 26/04/2005, 04:57
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
comboclientes.items.FindbyValue(registrocreado).se lected=true
  #3 (permalink)  
Antiguo 26/04/2005, 05:11
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
pero donde???

He intentado meter eso que me has puesto de: comboclientes.items.FindbyValue(registrocreado).se lected=true
pero me da error xq creo que no lo coloco en el buen sitio, donde iria???
gracias
  #4 (permalink)  
Antiguo 26/04/2005, 05:19
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Iría justo después de que el usuario haya metido el nuevo registro y el combo esté correctamente cargado, tambíen puedes probar

comboclientes.items.FindbyText(registrocreado).sel ected=true

ya que por lo que veo no le metes values a tu combo, así que deberia ser con byText, siendo registrocreado el valor que quieres seleccionar.
  #5 (permalink)  
Antiguo 26/04/2005, 05:20
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
error

HOla mira hice bien lo que me dijiste creo pero me dice esto:

A DropDownList cannot have multiple items selected.

Yo puse esto:

ArrayList comb = new ArrayList();
comb.Add("Selecciona: ");
while (reader.Read())
{
comb.Add(reader[1].ToString());
}
if (ComboClientes.Items.Count==0)
{
for (int z=0;z<comb.Count;z++)
{
ComboClientes.Items.Add(comb[z].ToString());
ComboClientes.Items.FindByValue(comb[z].ToString()).Selected=true;
}
}
  #6 (permalink)  
Antiguo 26/04/2005, 05:32
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
ArrayList comb = new ArrayList();
comb.Add("Selecciona: ");
while (reader.Read())
{
comb.Add(reader[1].ToString());
}
if (ComboClientes.Items.Count==0)
{
for (int z=0;z<comb.Count;z++)
{
ComboClientes.Items.Add(comb[z].ToString());
ComboClientes.ClearSelection();
ComboClientes.Items.FindByValue(comb[z].ToString()).Selected=true;
}
  #7 (permalink)  
Antiguo 26/04/2005, 05:36
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
perdón lo tienes que sacar del for, puesto que si no tendrás tantos selecs como elementos tenga el arraylist (que por cierto, ¿porque no llenas directamente el combo?)

ArrayList comb = new ArrayList();
comb.Add("Selecciona: ");
while (reader.Read())
{
comb.Add(reader[1].ToString());
}
if (ComboClientes.Items.Count==0)
{
for (int z=0;z<comb.Count;z++)
{
ComboClientes.Items.Add(comb[z].ToString());
}
ComboClientes.ClearSelection();
ComboClientes.Items.FindByValue(comb[comb.Count-1].ToString()).Selected=true;
  #8 (permalink)  
Antiguo 26/04/2005, 05:47
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
Si tienes razon

Pensaba cargarlo como dices tu asi:
ComboClientes.DataSource = reader;
ComboClientes.DataTextField = "Nombre";
ComboClientes.DataValueField = "Nombre";
ComboClientes.DataBind();
ComboClientes.Items.Insert(0,"SELECIONE UN ELEMENTO")
Pero no se xq cuando selecciono un registro del combo me vuelve al inicial de Seleccione un Elemento.

Por cierto se me keda seleccionado el ultimo registro incluso cuando entro por primera vez que debiera de seleccionar el de Selecciona xq puede ser???

Última edición por Nombela; 26/04/2005 a las 05:52
  #9 (permalink)  
Antiguo 26/04/2005, 07:06
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
ok!!!

Tenias razon, o he puesto cargando directamente el combo.

ComboClientes.Items.Add("Selecciona: ");
if (ComboClientes.Items.Count==1)
{
while (reader.Read())
{
ComboClientes.Items.Add(reader[1].ToString());
}
ComboClientes.ClearSelection();
ComboClientes.Items.FindByValue(ComboClientes.Item s[ComboClientes.Items.Count-1].ToString()).Selected=true;

El problema ahora es que la primera vez kerria ke se seleccionase el Selecciona y las otras no como podria hacer eso???
  #10 (permalink)  
Antiguo 26/04/2005, 08:20
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
pues te pongo el codigo en VB porque en C# no se exacatamente la sintaxis, pero sería en el page_load

if not ispostback then (en c# creo que es if (!postback) o algo asi)
ComboClientes.ClearSelection();
ComboClientes.Items[0].Selected=True;
else
ComboClientes.ClearSelection();
ComboClientes.Items.FindByValue(ComboClientes.Item s[ComboClientes.Items.Count-1].ToString()).Selected=true;
end if
  #11 (permalink)  
Antiguo 26/04/2005, 08:28
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
Sigue igual

He puesto lo que me has dicho:

if (ComboClientes.Items.Count==0)
{
ComboClientes.Items.Add("Selecciona: ");
while (reader.Read())
{
ComboClientes.Items.Add(reader[1].ToString());
}
}
if (!IsPostBack)
{
ComboClientes.ClearSelection();
ComboClientes.Items[0].Selected=true;
}
else
{
ComboClientes.ClearSelection();
ComboClientes.Items.FindByValue(ComboClientes.Item s[ComboClientes.Items.Count-1].ToString()).Selected=true;
}

Pero se pone siempre el valor de Selecciona es decir el ComboClientes.Items[0].Selected=true;

No se xq???
  #12 (permalink)  
Antiguo 26/04/2005, 08:43
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
En qué función tienes ese codigo??
  #13 (permalink)  
Antiguo 26/04/2005, 09:13
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
page_load

en el page_load, mira te lo pongo entero:

private void Page_Load(object sender, System.EventArgs e)
{
try
{
if (!Session["Roles"].ToString().Equals("SuperAdministrador"))
{
Response.Redirect("login.aspx");
}
if (!IsPostBack)
{
string nom;
nom=Session["Usuario"].ToString();
usu.Text=nom;
eliminar.Attributes.Add("onclick", "return confirm('Esta seguro que desea borrar el registro?');");
nuevonombre.Visible=false;
}
if (Request.QueryString["Ok"]=="1") mensage.Text = "(nuevo cliente creado)<br>";
if (Request.QueryString["Oku"]=="1") mensage.Text = "(cliente actualizado)<br>";
if (Request.QueryString["Okb"]=="1") mensage.Text = "(cliente eliminado)<br>";
myConnection = new SqlConnection(connectionString);
myCommand = new SqlCommand ("SELECT Clientes.UsIdCli, Clientes.Nombre, Clientes.Sede, Clientes.Descripcion "+
"FROM Clientes ;",myConnection);
myConnection.Open();
SqlDataReader reader = myCommand.ExecuteReader();
if (ComboClientes.Items.Count==0)
{
ComboClientes.Items.Add("Selecciona: ");
while (reader.Read())
{
ComboClientes.Items.Add(reader[1].ToString());
}
ComboClientes.ClearSelection();
//MsgBox.alert(ViewState["inter"].Equals("true").ToString());
if (Request.QueryString["Ok"]=="1")
ComboClientes.Items.FindByValue(ComboClientes.Item s[ComboClientes.Items.Count-1].ToString()).Selected=true;
else
ComboClientes.Items.FindByValue("Selecciona: ").Selected=true;
}
/*ComboClientes.DataSource = reader;
ComboClientes.DataTextField = "Nombre";
ComboClientes.DataValueField = "Nombre";
ComboClientes.DataBind();
ComboClientes.Items.Insert(0,"SELECIONE UN ELEMENTO")*/
reader.Close();
myConnection.Close();
cargardatos();
}
catch(Exception ex)
{
Response.Write("Error: " + ex.Message);
//Response.Redirect("login.aspx");
return;
}
}

private void cargardatos()
{
myConnection = new SqlConnection(connectionString);
myCommand = new SqlCommand ("SELECT Clientes.UsIdCli, Clientes.Nombre, Clientes.Sede, Clientes.Descripcion "+
"FROM Clientes WHERE (((Clientes.Nombre)='"+ComboClientes.SelectedItem. Value+"'));",myConnection);
myConnection.Open();
SqlDataReader reader = myCommand.ExecuteReader();
if (ComboClientes.SelectedIndex==0)
{
cambiar.Visible=false;
actualizar.Enabled=false;
eliminar.Enabled=false;
gestionars.Visible=false;
gestionaru.Visible=false;
nuevonombre.Visible=false;
CliSede.Value="";
CliDescripcion.Value="";
}
else
cambiar.Visible=true;

while (reader.Read())
{
CliSede.Value=reader["Sede"].ToString();
CliDescripcion.Value=reader["Descripcion"].ToString();
nombre.Text=reader["Nombre"].ToString();
if (ComboClientes.SelectedIndex>0)
{
gestionaru.HRef="MenuadministradorUsu.aspx?Nombre= "+reader["Nombre"].ToString();
gestionars.HRef="MenuadministradorUsu.aspx?Nombre= "+reader["Nombre"].ToString();
}
}
reader.Close();
myConnection.Close();
string strScript;
strScript = "<script>";
strScript += "document.getElementById('ComboClientes').focus(); ";
strScript += "</script>";
Page.RegisterStartupScript ("ClientScript", strScript);

}
  #14 (permalink)  
Antiguo 26/04/2005, 09:32
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Prueba esto:


private void Page_Load(object sender, System.EventArgs e)
{
try
{
if (!Session["Roles"].ToString().Equals("SuperAdministrador"))
{
Response.Redirect("login.aspx");
}
if (Request.QueryString["Ok"]=="1") mensage.Text = "(nuevo cliente creado)<br>";
if (Request.QueryString["Oku"]=="1") mensage.Text = "(cliente actualizado)<br>";
if (Request.QueryString["Okb"]=="1") mensage.Text = "(cliente eliminado)<br>";
if (!IsPostBack)
{
string nom;
nom=Session["Usuario"].ToString();
usu.Text=nom;
eliminar.Attributes.Add("onclick", "return confirm('Esta seguro que desea borrar el registro?');");
nuevonombre.Visible=false;


myConnection = new SqlConnection(connectionString);
myCommand = new SqlCommand ("SELECT Clientes.UsIdCli, Clientes.Nombre, Clientes.Sede, Clientes.Descripcion "+
"FROM Clientes ;",myConnection);
myConnection.Open();
ComboClientes.DataSource = myCommand.ExecuteReader();
ComboClientes.DataTextField= "Nombre";
ComboClientes.DataValueField="UsIdCli"; /o si qieres también nombre
ComboClientes.DataBind();
ComboClientes.Items.Insert(0,"Selecciona :");

if (Request.QueryString["Ok"]=="1")
ComboClientes.Items.FindByValue(ComboClientes.Item s[ComboClientes.Items.Count-1].ToString()).Selected=true;
else
ComboClientes.Items.FindByValue("Selecciona: ").Selected=true;
myConnection.Close();
cargardatos();
}
}
catch(Exception ex)
{
Response.Write("Error: " + ex.Message);
//Response.Redirect("login.aspx");
return;
}
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:45.