| ||||
te recomiendo hacerlo por javascript, ya que, agregar el evento onkeypress a un textbox sería muy pesado, es decir, cada vez que pulse una tecla vaya al servidor, vuelva y recarge......... por javascript sería: textbox1.Attributes.add("onkeypress","mifuncion(th is)") PD: el this no estoy seguro de que sea this, pero creo recordar que sí |
| ||||
La verdad ya le busque por todo lado y no encuentro la manera, de hacerlo, donde especifico, que lo que escriba + la operacion se vaya a mi otro texbox??
__________________ Saludos desde el corazón de América.....BOLIVIA Da lo mejor de ti, que siempre será recompensado |
| ||||
en una función javascript, lo que te he puesto lo pones el page_load de tu pagina, y luego te creas una función javascript en el aspx [PHP] <script> function mifunction(o object) { document.getElementById('recibe').value = 2 * o.value } </script> [PHP] siendo "recibe" el textbox donde aparecere el resultado. (deberías revisar la sintaxis, en el foro de javascript y convertirlos en int antes de operarlo que no me acuerdo como se hace). Otra forma de hacerlo es operar cuando ya ha terminado de escribir, eso lo haces directamente en el code, por ejemplo: [PHP] private sub TextBox1_TextChanged(byval sender as object, byval e as EventArgs) Handles TextBox1.TextChanged if isnumeric(textbox1.Text) textbox2.text = TextBox1.Text * 2 Else Response.Write("<script>window.alert('Debes introducir un número);</script>") end if end sub [PHP] Esto sería más fácil, pero se realizaría sólo cuando el TextBox1 pierda el foco y haya cambiado su valor. OK?? |
| ||||
Gracias Jose_minglein2, utilice el script que me funciono a la perfección, ahora tengo un pequeño problema, recuerdas que lo multiplicas por un 2, quisiera que en vez de ese 2 ingrese una variable desde mi pagina .aspx, ya le aumente a la llamda y la funcion un campo de variable pero no me funciona, que estoy haciendo mal?? Talvez sea porque le estoy mandando una variable de tipo double?? function mifuncion(o,numero) { document.getElementById('textbox2').value = o.value / numero }
__________________ Saludos desde el corazón de América.....BOLIVIA Da lo mejor de ti, que siempre será recompensado |
| ||||
de donde sacas número????Depende de como lo cojas podría venir ser dicho error, aparte, que error te da???Tambien puedes hacer esto, para asegurarte de no tener problemas con el double o algo así function mifuncion(o,numero) { document.getElementById('textbox2').value = parseFloat(o.value) / parseFloat(numero) } Pero seguro que no es de ahí el error. |
| ||||
bueno lo que pasa es que directamente ya no me escribe nada en el textbox2, me sale en blanco, mande esta funcion: Me.textbox1.Attributes.Add("onkeypress", "mifuncion(this," & numero & ");") pero ahora no me sale nada..............
__________________ Saludos desde el corazón de América.....BOLIVIA Da lo mejor de ti, que siempre será recompensado |
| ||||
Me.textbox1.Attributes.Add("onkeypress", "mifuncion(this," & Convert.tostring(numero).Replace(",",".") & ");") Ya que vb pasara el decimal con , y la funcion entonces lo interpretará como otro parametro, los errores de javascript te salen abajo a la izquierda (en la barra de estado, donde pone listo, cargado ...) para ver que fallos te da. |
| ||||
Gracias Jose_minglein2 era por otra razon que no salia el resultado, bueno y te explico que es lo que pasa, la funcion que me mandaste lo puse en el Page_Load y tu sabes bien que se carga al principio, bueno luego de eso realizo algunas operaciones y obtengo finalmente una variable XX y el valor de esa variable la necesito mandar a la funcion que tengo dentro del Page_load, como le hago?? Tengo declarada esa variable como Public XX as string o talvez la funcion que me mandaste la puedo poner en otro lugar del codigo?
__________________ Saludos desde el corazón de América.....BOLIVIA Da lo mejor de ti, que siempre será recompensado |
| ||||
Claro, la puedes poner donde quieras, p.ej Código PHP: |
| ||||
Nuevamente gracias Jose_minglein2, te cuento que me funciono de maravilla, pero ahora tengo un pequeño problema, despues de esas dos cajas de texto tento un combo, despues de colocar los datos, quiero irme directamente al combo y mi pagina se me borra o es como si no apareciera nada, que podria ser??? alguna solucion??
__________________ Saludos desde el corazón de América.....BOLIVIA Da lo mejor de ti, que siempre será recompensado |
| ||||
bueno despues de haber colocado un numero en el textbox, no presiono ni enter ni tab para ir al combobox, que seria mi siguiente control, si no que con el mouse directamente hago un click en la pestaña del combobox, y toda la pantalla se me pone en blanco, y no puedo ver ninguno de mis controles.... ![]()
__________________ Saludos desde el corazón de América.....BOLIVIA Da lo mejor de ti, que siempre será recompensado |
| ||||
no es ningun drop personlaizado, y si, si tiene el autopostback en true, ya que sin ello, no puedo ver mis datos, y tampoco puedo seleccionar nada, de nada como te dije apenas toco el combobox, y el explorer se me pone en blanco, en el drop solo cargo algunas datos de mi base y hace un selectchangedindex......
__________________ Saludos desde el corazón de América.....BOLIVIA Da lo mejor de ti, que siempre será recompensado |
| ||||
El autopostback es para que permita lanzar eventos al servidor, pero no tiene nada que ver para ver datos o seleccionarlos. Lo único que hace es que cuando selecciones algo lance un evento al server. Prueba quitandoselo, y si funciona pero te es imprescindible, buscaremos una solución altenativa al autopostback. PD: pon la etiqueta html de tu combo y los handles que tengas asociados en el code al mismo (solo los eventos), porque seguramene estés llamando al server en el "onfocus" del drop. |
| ||||
El AutoPostBack es imprecindible para mi ya que utilizo el selctindexchanged, y sin eso si funciona bien, habria alguna otra forma de arreglar el problema??
__________________ Saludos desde el corazón de América.....BOLIVIA Da lo mejor de ti, que siempre será recompensado |
| ||||
Pues en vez del autoPostback="true", lanzalo tu manualmente, es decir en el page_load de tu página: micombobox.Attributes.Add("onchange","javascript:_ _doPostBack('seleccion','');") y en tu code, en el page load tambien if ispostback if request.form("__eventtarget") = "seleccion" 'Lo que quieras que haga De todas formas, no tienes más eventos en tu combo???Porque es raro que antes de seleccionar un elemento te lance al server, como tienes definidio el SelectedIndexChanged en tu code??? Y como defines el drop en el html????Como te lo traduce a HTML??? |
| ||||
copie tu codigo y funciona cuando lo hago paso a paso, porque si lo hago correr de uno no me funciona, no tengo mas eventos en mi combo.... En mi funcion de cargar mis datos en mi combo, primero lleno los datos, y para llamar al selectindexchange hago lo siguiente: If combo.SelectedItem.Text = ("NOMBRE") Then combo_SelectedIndexChanged(Me, Nothing) End If ingresa al combo_SelectedIndexChanged.....
__________________ Saludos desde el corazón de América.....BOLIVIA Da lo mejor de ti, que siempre será recompensado |
| ||||
¿donde pones eso??? If combo.SelectedItem.Text = ("NOMBRE") Then combo_SelectedIndexChanged(Me, Nothing) End If creo que eso es seguramente lo que te esté dando error, lo de que se quedase la página en blanco, me parece que estás entrando en un bucle infinito, no puedes llamar a la función cambia si cambio, no se si me explico. |
| ||||
Lo coloco en mi funcion de cargar los datos en mi combo, primero lleno los datos, y para llamar al selectindexchange hago lo siguiente: private sub cargarcombo(....) ''aqui llamo a mi BD para cargar mis datos.... ''........ If combo.SelectedItem.Text = ("NOMBRE") Then combo_SelectedIndexChanged(Me, Nothing) End If end sub Entiendo, entonces como te dije si le quito este if y lo coloco en la __dopostback te todas formas no me sale, alguna otra idea??
__________________ Saludos desde el corazón de América.....BOLIVIA Da lo mejor de ti, que siempre será recompensado |
| ||||
Bien, una cosa, si no me equivoco, a la hora de cargar los datos, ya estás llamando al evento???No entiendo porque. Segundo supongo que ls datos del combo los estarás cargando dentro de: if not ispostback cargarcombo() end if porque si no lo que estás haciendo, como te dije es un bucle infinito, es decir, entra en el page_load - carga el combo - llama a selectedindexchanged - entra en el page_load -carga el combo ................ y así sucesivamente. |
| ||||
no, solo ingresa la primera vez, ya hice la prueba, paso a paso, y ya no entra dentro del if not postback.....alguna otra solucion?
__________________ Saludos desde el corazón de América.....BOLIVIA Da lo mejor de ti, que siempre será recompensado |
| ||||
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not (Page.IsPostBack) Then Call CargarCombo1() Call CargarCombo2() Call CargarCombo3() Call CargarCombo4() End If End Sub Private Sub combo1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles combo1.SelectedIndexChanged With Me.combo2 .DataSource = DS.Tables("tabla1") .DataTextField = "nombre" .DataValueField = "codigo" End With Me.combo2.DataBind() If Me.combo2.SelectedItem.Text = ("codigo") Then combo2_SelectedIndexChanged(Me, Nothing) End If End Sub y asi para los otros combos......... y el combo esta con Autopostback=true
__________________ Saludos desde el corazón de América.....BOLIVIA Da lo mejor de ti, que siempre será recompensado |
| ||||
Lo primero decirte que en VB.NET no te hacen falta los call, simplemente con que llames a la función sobra. Segundo si sólo tienes ese código es extremadamente raro (por no decir imposible) que te suceda eso que dices de la página en blanco, por otra, esto: Código PHP: 1- Cargas tus combos 2- Si cambias combo1, recargas combo2 (supongo que con datos distintos a los que tenía), si después de la recarga queda seleccionado el elemento cuyo valor es "codigo", llamas al metodo cambio de combo2 ..... Una cosa, antes de que se me olvide, cuando le pasas Me a la función referncias a la página, lo cual no es correcto, ya que deberías pasarle el combo2, entiendes?? Por último asegurate (por si acaso) que en un handles combo1 no llames a combo1_selectedindexchanged, es decir asegurate de que llamas siempre al otro combo (y por supuesto que en el ultimo combo no vuelvas al combo1), porque si no entrarías en bucle infinito, es decir en combo1_selectedindexchange->combo2 en combo2...->combo3 en combo3 ->combo4 en combo4 ->combo5 y ya, para lo que te digo de no entrar en bucle infinito. De todas formas además de revisarlo ejecutalo paso a paso, pon puntos de interrupción en cada una de las funciones de tu página y mira cuando entra en cada una y si lo hace en el momento indicado. |
| ||||
Los dos pasos que me dijiste son exactamente como entendiste...olvide mencionarte que con el selectindezchange del ultimo combo(donde esta el error) cargo un textbox.... Private Sub combo5_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles combo5.SelectedIndexChanged Dim strCadenaConexion As String strCadenaConexion = ObtenerCadenaConexion() Dim oleConn As New OleDb.OleDbConnection(strCadenaConexion) Dim oleComm As New OleDb.OleDbCommand("", oleConn) Dim oleDA As New OleDb.OleDbDataAdapter("", oleConn) oleConn.Open() Dim strCargo oleComm.CommandText = "SELECT nombre FROM ciudad WHERE " & _ " nom_cod='" & Me.combo5.SelectedValue & "'" strCargo = oleComm.ExecuteScalar oleConn.Close() Me.txtCargo.Text = strCargo Me.txtCargo.DataBind() End Sub y como te dije al ejecutarlo paso a paso, entra en las condiciones que debe entrar, y no hace ningun bucle infinito, ya que al hacerlo paso a paso, funciona perfectamente, pero no asi cuando lo hago correr de una.......
__________________ Saludos desde el corazón de América.....BOLIVIA Da lo mejor de ti, que siempre será recompensado |
| ||||
Me.txtCargo.DataBind() te sobra, ¿DataBind en un textbox??? Yo pondría Me.txtCargo.Text = strCargo.toString() A parte de eso y si dices que ejecutando paso a paso te va perfectamente......Buf no se macho, haz una cosa, ves haciendolo progresivo haber donde te deja de funcionar, es decir, primero pon solo con autopostback a true en el combo 1 para que recarge combo2, si funciona, pones a true el combo2 para el 3, y así sucesivamente, haber que pasa, al igual en las llamadas, es decir, primero, en el selectedindexchaged de los combos de 2 al 5, quita las llamadas al selectedindexchanged del superior, no se si me explico. |