Recorrer Array hacia delante y hacia tras

12/11/2008 - 22:01 por jazdian | Informe spam
Hola a todos:

Tengo el siguiente problema:

Estoy creando una pagina web que simula una base de datos con los
botones respectivos de Adelante y Atras.

1.- Primero recumero de Sql Server la tabla de productos y luego la
vacío en unos arrays.

static int[] IdProductos = new int[185];
static string[] Productos = new string[185];
private void GenerarProductos()
{
string GenerarProductos = "SELECT ID_PRODUC_AUTO, NOMBRE FROM
Productos ";
DataTable dt;
SqlDataAdapter da;
da = new SqlDataAdapter(GenerarProductos, miconexion);
dt = new DataTable();
da.Fill(dt);
int CantidadRegistros = Convert.ToInt16(dt.Rows.Count);
CantidadRegistros = CantidadRegistros - 1;

for (int i = 0; i <= CantidadRegistros; i++)
{
//Aqui Voy cargando el id producto en este array estatico
IdProductos[i] = Convert.ToInt16(dt.Rows[i]
["ID_PRODUC_AUTO"]);
}

for (int y = 0; y <= CantidadRegistros; y++)
{
//Aqui Voy cargando el producto en este array estatico
Productos[y] = dt.Rows[y]["NOMBRE"].ToString();
}
//una vez que se llenaron los arrays pongo los primeros
tres registros en mis textbox
this.LabelId1.Text = IdProductos[0].ToString();
this.LabelProd1.Text = Productos[0].ToString();

this.TextBoxId.Text = IdProductos[1].ToString();
this.TextBoxProd.Text = Productos[1].ToString();

this.LabelId2.Text = IdProductos[2].ToString();
this.LabelProd2.Text = Productos[2].ToString();
}

2.- En click del boton adelante está este código y funciona bien.

protected void ButtonNext_Click(object sender, EventArgs e)
{
//Recupero los valores iniciales de los textbox osea el Id de producto
int Control1 = Convert.ToInt16(this.LabelId1.Text); //1 estos
son los valores iniciales
int Control2 = Convert.ToInt16(this.TextBoxId.Text); //2
int Control3 = Convert.ToInt16(this.LabelId2.Text); //3
//Asigno a otras variables los valores de los textBox
int a1 = Control1;
int b1 = Control2;
int c1 = Control3;

this.LabelId1.Text = IdProductos[a1].ToString(); //Su index
inicial era 0 ahora es 1
this.LabelProd1.Text = Productos[a1].ToString(); //Su index
inicial era 0 ahora es 1

this.TextBoxId.Text = IdProductos[b1].ToString(); //Su index
inicial era 1 ahora es 2
this.TextBoxProd.Text = Productos[b1].ToString(); //Su index
inicial era 1 ahora es 2

this.LabelId2.Text = IdProductos[c1].ToString(); //Su index
inicial era 2 ahora es 3
this.LabelProd2.Text = Productos[c1].ToString(); //Su index
inicial era 3 ahora es 3
}

Este procedimiento que hace que el array vaya hacia delante funciona
bien

3.- Pero este que va para atras no funciona les pego el código

protected void ButtonLast_Click(object sender, EventArgs e)
{
//supongamos que ya fui hacia delante varios registros y los valores
de los text box son:
int Control1 = Convert.ToInt16(this.LabelId1.Text); //5
int Control2 = Convert.ToInt16(this.TextBoxId.Text); //6
int Control3 = Convert.ToInt16(this.LabelId2.Text); //7
//Aqui le resto un tanto al valor de los controles
int a1 = Control1 - 1;
int b1 = Control2 - 1;
int c1 = Control3 - 1;
//Si el primer textbox tiene 1 salgo del procedimiento, si no
continua
if (Control1 == 1)
{
return;
}
//Aqui esperaria que en lugar de ir hacia delante fuera hacia tras
pero no hace nada se queda con los mismos valores
this.LabelId1.Text = IdProductos[a1].ToString();
this.LabelProd1.Text = Productos[a1].ToString();

this.TextBoxId.Text = IdProductos[b1].ToString();
this.TextBoxProd.Text = Productos[b1].ToString();

this.LabelId2.Text = IdProductos[c1].ToString();
this.LabelProd2.Text = Productos[c1].ToString();

}

Por ciero es un proyecto de asp AJAX, los controles estan dentro de
un:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel><ContentTemplate>Mis Controles </asp:UpdatePanel></
ContentTemplate>

Ya llevo tiempo tratando de solucionarlo pero no puedo, talvez me
estoy complicando así que si me pueden sugerir otro metodo mas facil y
que funcione recorrer hacia delante y hacia tras les agradecería
muchisimo. Soy un programador empirico espero comprendan si es una
burrada lo que trato de hacer.

Saludos a todos.

Preguntas similare

Leer las respuestas

#1 jazdian
13/11/2008 - 16:01 | Informe spam
On 12 nov, 15:01, jazdian wrote:


Ya llevo tiempo tratando de solucionarlo pero no puedo, talvez me
estoy complicando así que si me pueden sugerir otro metodo mas facil y
que funcione recorrer hacia delante y hacia tras les agradecería
muchisimo. Soy un programador empirico espero comprendan si es una
burrada lo que trato de hacer.

Saludos a todos.



Ok creo que puse demasiado código sin embargo ya resolví la cuestion.
Para ir hacia atras en el array hice lo siguiente:

protected void ButtonLast_Click(object sender, EventArgs e)
{
//supongamos que ya fui hacia delante varios registros y los valores
de los text box son:
int Control1 = Convert.ToInt16(this.LabelId1.Text); //5
int Control2 = Convert.ToInt16(this.TextBoxId.Text); //6
int Control3 = Convert.ToInt16(this.LabelId2.Text); //7
//Aqui estaba el problema pues en lugar de restarle uno al valor del
Texbox había que restarle 2. Pues lo que descubri es lo siguiente:
int a1 = Control1 - 2; //antes int a1 = Control1 - 1;
int b1 = Control2 - 2; //antes int b1 = Control2 - 1;
int c1 = Control3 - 2; //antes int c1 = Control3 - 1;

//El problema era recoger el valor del text box restarle 1 y el valor
final asignarlo al indice de la matriz ¿Pero que era lo que pasaba?
//Pues si el valor de LabelId1.Text era 5 le restaba 1 y quedaba 4; el
4 lo asignaba al indice IdProductos[4].ToString() sin embargo
//el valor el indice de la matriz IdProducto[] ya era 4 pues el indice
comienza con CERO así que por eso no cambiaban los valores
//y ahora en lugar de restarle 1 le resto 2. así si retraza un
registro en todos TextBox.
//Los primero dos controles representa el registro anterior, los
siguientes dos controles representa el registro activo y los últimos
dos
//el registro siguiente.

this.LabelId1.Text = IdProductos[a1].ToString();
this.LabelProd1.Text = Productos[a1].ToString();

this.TextBoxId.Text = IdProductos[b1].ToString();
this.TextBoxProd.Text = Productos[b1].ToString();

this.LabelId2.Text = IdProductos[c1].ToString();
this.LabelProd2.Text = Productos[c1].ToString();

}
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida