| ||||
Por un lado como esto lo tengo que aplicar a varios datagrids en diferentes paginas probe a cambiar de pagina,en esta era pagado el check a cambiar. Por otro lado como en el checked=... si pongo databinder.eval me da error, si lo dejo como lo tenia me va bien , probe en el onclick o ponerlo sin y con el databinder.eval y a cambiar el campo que cogia (dni) por hacer pruebas.... Voy a dejarlo entonces igual en los dos. Lo de los errores pues ; Joder YA no da error,los eh ppeusto iguales y al dar click sobre los pagados no da error ![]() ![]() ![]() ![]() De puta madre,se ven el el imput text como va metiendo los id por que ahora lo que he puesto qeu apse es el id.Ahora tvoy a configurar el tem para que el boton haga su trabajo,ya que o hev visto que recarge la pagina ni nada,cuandol o chekee pongo como keda too |
| ||||
Hay una cosita q no entiendo que me esta pasando,el onclick va de vicio pero le paso el volor del id que deberia ser el año - un numero Son 1005-1,2005-2.... Este id en el grid aparece perfectamente pero cuando le doy ha onclick y le paso el id ala funcion add esta lo recoge con otro valor,con el valor de 2004 en un caso,es otro 1999,otro 2002,todos como si fueran años.Y es cuestion de lo que le lleg a ala fucnion como valor ya que pongo un aler tal pricnipio que muestra el valor y ya viene mal. Quizas intenta una conversion a tipo fecha ???? <ItemTemplate> <input id="micheck" type="checkbox" checked='<%# Container.Dataitem ("Pagado") %>' onclick='javascript:add(<%# Container.Dataitem ("id") %>);' /> </ItemTemplate> </asp:TemplateColumn> <asp:BoundColumn DataField="id" SortExpression="id" HeaderText="id"></asp:BoundColumn> Ahhh ya se al tener 2005-4 por ejemplo lo toma com una resta,como puedo evitar esto???,esto me devuelve 2001 |
| ||||
Buah, que putada, de momento puedes hacer, si te deja add(<%# Convert.toString(Container.DataItem("id") %>); o add(<%# Container.Dataitem ("id").toString %>); Porque el id vendrá como un string, no?? así que el que te está haciendo la conversión es el javascript, de todas maneras voy a buscar algo de info haber |
| ||||
el convert.tpstring no da errores por nosolucina el tema.lo mismo el .tostring el campo en sqlserver es nvarchar --> string pero la funcion javascript lo resta,hay alguna forma de indicarle al metodo add que lo que esta recogiendo es de tipo string en el add(valor){} ???? he probao ha poner string valor pero deja de funcionar el metodo,tb he probao a pasarle el code con comillas incluyendolas en el onclick pero naa,me deja tb de funcionar el onclik (aunq no da error). |
| ||||
¿Has probado así? onclick="javascript:add('<%# Container.Dataitem ("id") %>');" Si no te funciona, y no encontramos otra solución mejor, puedes hacer o bien, en la consulta o en el html algo así: javascript.add(<%# Convert.toString(Container.DataItem("id")).Replace ("-","_") %>) Y luego cuando hagas el postBack, lo haces a la inversa, no se si me entiendes, |
| ||||
Ole.Asi funciona: onclick='javascript:add( "<%# (Container.Dataitem ("id")).toString %>" ) ;' /> ![]() YA solo me keda que me haga el postback,ya que tengo puesto en el pageload 'fuera del if not ispostback if request.form.item("__eventtarget") = "Guardar" label1.text=Convert.toString(request.Form.Item("__ eventargument")) end if para ver si me devuelve algo pero no muestra nada <input onclick="javascript:__doPostBack('Guardar',documen t.getElementbyId('text').value)" type="button" value="Guardar" /> No hace falta poner la funcion dopostback no??? la idea es que lo unico que hago es pasarle los dos parametros,lo que estoy pensando en hacer es hacer lla prueba de crearme mi propia funcion javascript que haga lo mismo que la -__dopostback.. con su submit que es el que va al servidor,ya que el dopostback parece que no se ejecuta,no hay recarga de pagina. |
| ||||
Si pusiste lo de Page.GetPostBackEventReference(Page) y no te sale ningún mensaje de error (el dichoso iconito amarillo) si que se debe de ejcutar, pon un punto de interrupción en el page_load de tu webform para comprobarlo, además puedes poner un ; al finá de la función onclick="javascript:__doPostBack('Guardar',documen t.getElem entbyId('text').value);" |
| ||||
joer,pos no recarga,he puesto que cada vez que entre al page_load sume uno a un label... le he añadido el ;,puse el Page.GetPostBackEventReference(Page) y no veo el icono amarillo. He probao a poner mi funcion igual ala __postaback pero tampoco pasa nada. Tambien he probao asi <input language="javascript" id="button1" onclick="__doPostBack('Guardar',document.getElemen tbyId('text').value);" type="button" value="Guardar" name="button1" runat="server" /> como viene en http://www.elguille.info/colabora/pu...arPostBack.htm pero naa |
| ||||
Joder que raro tio, no se, intenta poner document.__doPostBack o window.__doPostBack o window.document.__doPostBack Haber si te lo coje con alguna de esas. ¿No tendrás frames, verdad???El input, debería estar fuera de cualquier control, tipo panel o datagrid |
| ||||
<html> <head> <script> function add(valor) { alert(valor); var inf = document.getElementById('text').value; if (inf.indexOf(valor)==-1) { document.getElementById('text').value = document.getElementById('text').value + valor + "#"; } else { document.getElementById('text').value = document.getElementById('text').value.replace(valo r + '#',''); } //document.getElementById('text').setAttribute('valu e',document.getElementById('text').getAttribute('v alue')+valor); } </script> </head> <body> <form runat="server"> <img style="WIDTH: 162px; HEIGHT: 65px" height="65" src="logo.GIF" width="130" /> <asp:DataGrid id="DataGrid1" runat="server" onsortcommand="DataGrid1_SortCommand" AutoGenerateColumns="False" CellPadding="3" BackColor="White" BorderColor="#999999" BorderWidth="1px" GridLines="Vertical" BorderStyle="None" AllowSorting="True"> <FooterStyle forecolor="Black" backcolor="#CCCCCC"></FooterStyle> <HeaderStyle font-bold="True" forecolor="White" backcolor="#000084"></HeaderStyle> <PagerStyle horizontalalign="Center" forecolor="Black" backcolor="#999999" mode="NumericPages"></PagerStyle> <SelectedItemStyle font-bold="True" forecolor="White" backcolor="#008A8C"></SelectedItemStyle> <AlternatingItemStyle backcolor="Gainsboro"></AlternatingItemStyle> <ItemStyle forecolor="Black" backcolor="#EEEEEE"></ItemStyle> <Columns> <asp:BoundColumn DataField="Apellidos_Nombre" SortExpression="Apellidos_Nombre" HeaderText="Apellidos, Nombre"></asp:BoundColumn> <asp:BoundColumn DataField="DNI" SortExpression="DNI" HeaderText="DNI"></asp:BoundColumn> <asp:BoundColumn DataField="Telefono1" SortExpression="Telefono1" HeaderText="Teléfono móvil"></asp:BoundColumn> <asp:BoundColumn DataField="Telefono2" SortExpression="Telefono2" HeaderText="Teléfono fijo"></asp:BoundColumn> <asp:BoundColumn DataField="Curso" SortExpression="Curso" HeaderText="Curso"></asp:BoundColumn> <asp:BoundColumn DataField="FechaINi" SortExpression="FechaINi" HeaderText="Fecha Inicial" DataFormatString="{0:MM-dd-yyyy}"></asp:BoundColumn> <asp:BoundColumn DataField="FechaFin" SortExpression="FechaFin" HeaderText="Fecha Final" DataFormatString="{0:MM-dd-yyyy}"></asp:BoundColumn> <asp:TemplateColumn HeaderText="Pagado"> <ItemTemplate> <!-- <asp:CheckBox id="CheckBox" runat="server" onclick="javascript:add(<%# DataBinder.Eval(Container.DataItem,'DNI') %>);" Checked='<%# Container.Dataitem ("Pagado") %>' runat="server"></asp:CheckBox>--> <input id="micheck" type="checkbox" checked='<%# Container.Dataitem ("Pagado") %>' onclick='javascript:add( "<%# (Container.Dataitem ("id")).toString %>" ) ;' /> </ItemTemplate> </asp:TemplateColumn> <asp:BoundColumn DataField="id" SortExpression="id" HeaderText="id"></asp:BoundColumn> </Columns> </asp:DataGrid> <!-- Insert content here --><a href="TipoCurso.aspx">volver atras</a> <asp:Label id="Label1" runat="server">Label</asp:Label> <input id="text" type="text" /> <input id="button1" onclick='alert("entra");javascript:__doPostBack("G uardar",document.getElementbyId("text").value);' type="button" value="Guardar" name="button1" runat="server" /> </form> </body> </html> sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load dim ds as System.Data.DataSet ds=dataset() Page.GetPostBackEventReference(Page) label1.text +=label1.text if request.form.item("__eventtarget") = "Guardar" then label1.text=Convert.toString(request.Form.Item("__ eventargument")) end if if not ispostback then if Request.querystring("curso")="" then response.redirect("europa.aspx") else SESSION("ds1")=ds datagrid1.DataSource=ds.tables("TCURSOS") datagrid1.databind() end if end if 'lblerror.visible=false end sub Probe lo que em pusiste y tampoco,no me recarga,he leido la pagina que te postee antes dond esplica el funcionamiento y me deberia funcionar ![]() |
| ||||
Una cosa, aunque en teoría no debe afectar sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load dim ds as System.Data.DataSet ds=dataset() Page.GetPostBackEventReference(Page) label1.text +=label1.text if not ispostback then if Request.querystring("curso")="" then response.redirect("europa.aspx") else SESSION("ds1")=ds datagrid1.DataSource=ds.tables("TCURSOS") datagrid1.databind() if request.form.item("__eventtarget") = "Guardar" then label1.text=Convert.toString(request.Form.Item("__ eventargument")) end if end if end if 'lblerror.visible=false end sub Ya que el el Request.Form siempre vendrá en un postback (si le hacemos funcionar), así en la primera carga te evitas una comparación, (por cuestión de rendimiento aunque sea insignificante). Otra cosa, (aunque supongo que ya lo habrás probado), dentro del postback, el guardar y el texto con comilla simple y el onclick englobado en comilla doble: onclick="alert('entra');javascript:__doPostBack('G uardar',document.getElementbyId('text').value);" ¿Has puesto punto de interrupción y no te entra????Es demasiado raro, yo utilizo el postback miles de veces en mis aplicaciones y nunca he tenido este tipo de problemas |
| ||||
Solucionado Era eso ultimo,el tema de las mayuculas y las minusculas,que no da error pero lo tienes mal...LA costumbre de .net que no tenemos que andar al loro con las mayusculas y las minusculas.... Me acuerdo con cobol que hay que mirar hasta la columna... ![]() Gracias tio ![]() |
| ||||
oye jose,tengo un problemilla con esto,lo deje preparado en un grid d eejmplo apra en los griids q me lo piederan palicarlo y ahora me lo han pedido en varios. El tema esta en el simple enlace del cehcbox con la columna de la bd. Al necesitar trabajar en el lado del cleinte debiamos quitar el runat="server" pero si neste no me hace bien el enlace ,me aparecen todos cehkeados(checked='<%# Container.Dataitem ("Pagado") %>'). En cambio por ejemplo en el textbox cuando enlazaba el text lo hace sin ningun problema si nel runat server en el grid q actualizo con texbox... Alguna idea? Si le pongo el runat ="server" la conexion la hace bien(parecen bien los qe tiene q estar chekeados) pero no me funciona too el code que definidos en este post.... |
| ||||
si lo pones sin el runat server ya no es checked=true (o false), si no que tienes que poner checked o no ponerlo, por lo que, haz que la consulta pagado te devuelva "checked" o "", y en vez de checked='<%# Container.... pon solo <%# container.... ok?? |
| ||||
Entiendo,aunq me da error en el html. Creo q en la consulta propia se podria sustituir 1 por checked y 0 por "" pero he hecho un bulce q modifique el dataset,pero tengo el problema de que no es una columna bolleana y no le puedo meter un string .Aunq me da el error en el html que es lo importante,esto ultimo se me ocurren formas de solucionarlo: <input id="micheck" type="checkbox" onclick='javascript:add( "<%# (Container.Dataitem ("id")).toString %>" ) ;' <%# Container.Dataitem ("Pagado") % /> /> Me crea la contrabarra que esta en azul y luego em da error,como si no lo reconociera o no pintara nada eso ahi... El error: The server block is not well formed. Última edición por neivan; 21/07/2005 a las 07:35 |
| ||||
Bien yo he estado haciendo pruebas, de esta manera: <input id="micheck" type="checkbox" onclick='javascript:add( "<%# (Container.Dataitem ("id")).toString %>" ) ;' checked="<%# Container.Dataitem ("Pagado") %>" /> y mi consulta sql me devuelve Pagado como un string a "true" o "false" (con minusculas) y funciona sin problemas, mi consulta es: select if(pagado=1,'true','false') as Pagado from contrato |
| ||||
Me da error cerca de la sentencia if,he probado el as pagado sustiturilo por 'pagado' pero lo mismo,voy a mirar como van eso de las if en las consultas por q seguramente lo este haciendo mal. adap1=new System.Data.SqlClient.SqlDataAdapter("Select (Apellidos + ', ' + Nombre) 'Apellidos_Nombre',"& _ "s.codigo 'id',DNI,telefono1 , telefono2,denominacion 'curso' "& _ ",clases,s.FechaINi ,s.FechaFin ,estado, "& _ "fechabaja,fechanac,if(s.pagado=1,'true','fals e') as Pagado from solicitud s,alumnos a,cursos_fnocontinua c "& _ "where a.codigo=s.alumno and s.codcurso=c.codigo"& _ " and c.codigo="& curso & " order by Apellidos_Nombre" ,cn) |
| ||||
MySQL ----------------------------------------------------------------- select if(pagado=1,'true','false') as Pagado from contrato SQL-Server ----------------------------------------------------------------- select iif(pagado=1,'true','false') as Pagado from contrato Por cierto, si no rula, se puede probar con CASE WHEN, algo asi: SELECT Pagado = CASE pagado WHEN 1 THEN 'true' ELSE 'false' END, price AS Precio [...] FROM titles WHERE price IS NOT NULL ORDER BY pagado, price Saludos!
__________________ ..:: moNTeZIon ::.. Última edición por moNTeZIon; 22/07/2005 a las 05:11 |
| ||||
Joer ya te digo,como se complican,asi q yo buscaba if y no me aparecia nada...Ahora con iif he encontrado mieles de ejemplos y parece super sencillo pero me esta poniendo de los nervios ya por q me da error en el = He probado miles d ejemplos con >= y me daba en el mayor ,con otro campo precio q es entero en vez de bit como este...... Error: sintaxis incorrecta cerca de '='. ....fechanac,(iif(s.precio=1 ,'true','false')) 'PAg' , .... Si quito la sentencia iff funicona todo el resto He probado con 2 == tb ya q he visot algun ejemplo asi,y con el as en vez de las comillas ![]() ![]() ![]() Si consigo q me vaya esto ya termino con lso listados.... |
| ||||
No,el precio es float,y he probado con otro q es enero q es integer El que es del tipo bit es el q me interesa (bit) pero me ha dao un error al ponerlo asi que dice (iif(s.pagado,'true','false')) as Pag Exception Details: System.Data.SqlClient.SqlException: 'iif' no es un nombre de función reconocido. Y con otros ejemplos con enteros me da en las comparaciones ,en el = en el < o mayor ,lo que ponga despues de la columna o campo de la bd . ![]() |