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

como realizar una condicion con los valores d datagrid

Estas en el tema de como realizar una condicion con los valores d datagrid en el foro de .NET en Foros del Web. Hola, neceito mostrar SI o NO en una de las columnas del datagrid, segun el valor del siguiente campo:"in_avaluos_auditados", ya que en la base de ...
  #1 (permalink)  
Antiguo 19/11/2004, 08:43
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 20 años, 5 meses
Puntos: 0
Pregunta como realizar una condicion con los valores d datagrid

Hola, neceito mostrar SI o NO en una de las columnas del datagrid, segun el valor del siguiente campo:"in_avaluos_auditados", ya que en la base de datos se guarda una s o una n.

Se que es con un condicional if, pero nose como colocar la sintaxis, sin que me de error??

<asp:TemplateColumn HeaderText="Registro Auditado" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" ItemStyle-Width="50px">
<ItemTemplate>
<font face="Verdana" size="1">
<%If %><%# DataBinder.Eval(Container.DataItem,"in_avaluos_aud itados")%> ="SI"
<%# DataBinder.Eval(Container.DataItem,"in_avaluos_aud itados")%>
</font>
</ItemTemplate>
</asp:TemplateColumn>

espero puedan aclarme mi duda
  #2 (permalink)  
Antiguo 19/11/2004, 08:49
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
El amigo RootK me dio una solución a un problema que tenía muy similar al tuyo.
http://www.forosdelweb.com/f29/recuperar-campo-registro-recien-creado-247453/
Como ves, no es muy difícil la solución, pero es, sin duda, ingeniosa.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #3 (permalink)  
Antiguo 19/11/2004, 09:40
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 20 años, 5 meses
Puntos: 0
Gracias Bravenap, probando y probando a la final lo hice dentro de la misma consulta sql, asi:
SELECT case I.in_avaluos_auditados when 'S' then 'Si' else 'No' end in_avaluos_auditados FROM ...

Asi me devuelve directamente el SI o NO. Pero la funcion que uso Rootk esta muy interesante!!
Pero ahora tengo otro problemita, que nose si utilizando algo como lo que uso Rootk, podra servirme.
Dependiendo si el valor del campo in_avaluos_auditados = NO , entonces se deberia poder presionar un link , que lo construi asi:

<ItemTemplate>
<font face="Verdana" size="1">
<a href="AuditoriaIndividual.aspx?CodAud=<%=CoAud%>&N roSolicitud=<%# DataBinder.Eval (Container.DataItem, "nu_solicitud_avaluo")%>&Avaluador=<%# DataBinder.Eval(Container.DataItem,"nb_usuario")%>
<%# DataBinder.Eval(Container.DataItem,"nb_apellido")% >&MetodoValoracion=<%# DataBinder.Eval(Container.DataItem,"nb_metodo_aval uo")%>&TipoInm=<%# DataBinder.Eval(Container.DataItem,"nb_tipoinmuebl e")%>&CoAvaluo=<%# DataBinder.Eval (Container.DataItem, "co_avaluo")%>" target="_top" title="Auditoria Individual">
Auditoria<br>Individual</a> </font>
</ItemTemplate>

si por el contrario el valor de in_avaluos_auditados = Si, entonces este link se debe deshabilitar. Se que podria usar un
asp:linkbutton ID="lnkInforme" Runat=server Enabled="condicion"

pero nose como colocarlo?
  #4 (permalink)  
Antiguo 19/11/2004, 10:00
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Hazme un favor, mete el código dentro de unas etiquetas CODE (#) para que lo pueda ver mejor, que me lio.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #5 (permalink)  
Antiguo 19/11/2004, 12:01
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 20 años, 5 meses
Puntos: 0
Suimplificando el codigo sin tantos argumentos, el link es:
<ItemTemplate>
<font face="Verdana" size="1">

<a href="AuditoriaIndividual.aspx?CodAud=<%=CoAud%>
&NroSolicitud=<%# DataBinder.Eval (Container.DataItem, "nu_solicitud_avaluo")%>
>" target="_top" title="Auditoria Individual">

Auditoria<br>Individual</a>
</font>
</ItemTemplate>

Necesito habilitarlo si el valor del campo
<%# DataBinder.Eval(Container.DataItem,"in_avaluos_aud itados")%>
es igual "NO".
Se entiende ahora?
  #6 (permalink)  
Antiguo 19/11/2004, 12:25
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Ajá, pon esto:

Código:
<%#verificar(DataBinder.Eval(Container.DataItem,"in_avaluos_auditados"),DataBinder.Eval (Container.DataItem, "nu_solicitud_avaluo")%>
Y en el CodeBehind:
Código:
protected string verificar(string SiNo,string Num)
{
   if(SiNo=="Si")
   {
      return "<a href='AuditoriaIndividual.aspx?CodAud="+CoAud+">
&NroSolicitud="+Num+" target='_top' title='Auditoria Individual'>";
   }
   else
   {
      return "Ya auditado";
   }
}
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #7 (permalink)  
Antiguo 19/11/2004, 13:38
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 20 años, 5 meses
Puntos: 0
disculpa tanta molestia pero me puedes echar una manito en arreglar la sintaxis del link en VB.NET?

La funcion la estoy haciendo asi:
Protected Function verificar(ByVal SiNo As String, ByVal Num As String, ByVal CoAud As String)
If SiNo = "No" Then
'colocar link
Return "<a href='" & "AuditoriaIndividual.aspx?CodAud='" & CoAud & "'&NroSolicitud='" & Num & "' target=" & "_top" & " title=" & "Auditoria Individual>"
Else
Return "Ya auditado"
End If
End Function
colocando que reciba un tercer argumento en la funcion, pero no me muestra el link, y creo que es error de sintaxis, pero no veo dde??
  #8 (permalink)  
Antiguo 19/11/2004, 15:16
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Lo primero de todo es que verifiques el tema de la comilla simple, no vaya a ser que entre tanta comilla al final acabes poniendo un comentario.

Lo segundo es el tema de CoAud. En el ASPX tenías

<%=CoAud%>

No sé muy bien de dónde sacas esa variable, si es de sesión, o es un valor que te devuelve la base de datos.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #9 (permalink)  
Antiguo 19/11/2004, 15:28
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 20 años, 5 meses
Puntos: 0
Con respecto a las comillas simples, te confieso que esta muy enredado, asi que trate de hacerlo asi:
Return "<a href=""AuditoriaIndividual.aspx?CodAud=" & CoAud & "&NroSolicitud=" & Num & """ target=""_top"" title=""Auditoria Individual"" & " > " & aqui " & "</a>"

usando solamente comillas dobles. Ahora no me da error pero no me muestra el link sino la palabra "true", cosa que no entiendo porque??

Con respecto a la variable CoAud, es una variable que le envia otra pagina a la pagina dde estoy trabajando ahora, y que la capturo asi:
CoAud = Request.QueryString("strCoAud")

y en la funcion la utilizo asi, :
<%#verificar(DataBinder.Eval(Container.DataItem,"i n_avaluos_auditados"),DataBinder.Eval (Container.DataItem, "nu_solicitud_avaluo"),CoAud)%>

y no me da problema, probe en el mismo codigo de la funcion que me imprimiera los valores que estaba recibiendo y efectivamente me los imprime:
If SiNo = "No" Then
Return "Num ='" & Num & "'CoAud='" & CoAud & "'"
Else ...

es problemas de sintaxis verdad? por eso no me muestra el link??
  #10 (permalink)  
Antiguo 19/11/2004, 17:25
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
A ver.

CoAud no hace falta que lo pases en la función, símplemente llama a QueryString cuando tengas que usarla.

True puede que te salga porque "in_avaluos_auditados" es un campo True/False.

Código:
Public Function verificar(ByVal SiNo As Boolean, ByVal Num As String) As String
CoAud = Request.QueryString("CoAud").ToString()
If SiNo = False Then
'colocar link
Return "<a href='" & "AuditoriaIndividual.aspx?CodAud='" & CoAud & "'&NroSolicitud='" & Num & "' target=" & "_top" & " title=" & "Auditoria Individual>"
Else
Return "Ya auditado"
End If
End Function
Si "nu_solicitud_avaluo" es un número, tampoco lo podrás pasar como cadena sino, por ejemplo, ByVal Num As Integer. Y luego:

......&NroSolicitud='" & Num.ToString() & "' target.......

A ver ahora.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #11 (permalink)  
Antiguo 22/11/2004, 15:10
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 20 años, 5 meses
Puntos: 0
Hola, probe con la sintaxis que me dices,arregle lo de los parametros, ya no me sale el "true" que ,me aparecia antes, pero todavia no me muestra el link???

Fijate lo estoy colocando asi:
Return "<a href='" & "AuditoriaIndividual.aspx?CodAud='" & CodAud & "'&NroSolicitud='" & Num.ToString() & "' target=" & "_top" & " title=" & "Auditoria Individual>"

no hay otra forma de imprimir el link?? o de validar que se coloque o no el link, dependiendo del valor de <%# DataBinder.Eval(Container.DataItem,"in_avaluos_aud itados")%>

No entiendo porque no muestra el link?? Que puedo hacer?
  #12 (permalink)  
Antiguo 22/11/2004, 16:18
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
No sale el link ..... pero, entonces, ¿sale "Ya auditado"?
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #13 (permalink)  
Antiguo 22/11/2004, 17:04
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 20 años, 5 meses
Puntos: 0
Si me aparecia "Ya auditado", pero el link no.Bravenap, sabes un amigo me dio la solucion y quiero compartirla con Uds. y por supuesto agradecerte por tu gran apoyo!!

En la consulta que llena el datagrid coloco un campo true/false del que hara la condicion para mostrar el link, asi:
'campo VERLINK para habilitar o deshabilitar el link de Auditoria Individual
strSql = strSql & " select case I.in_avaluos_auditados when 'N' then 'TRUE' else 'False' end VERLINK" ...

luego en el aspx, coloco:
<%# iif(DataBinder.Eval (Container.DataItem, "VERLINK"),"","Ya Auditado")%>
<asp:HyperLink visible=<%# DataBinder.Eval (Container.DataItem, "VERLINK")%> id="Hyperlink_Aud" NavigateUrl='<%# "AuditoriaIndividual.aspx?NroSolicitudAvaluo="&Dat aBinder.Eval(Container.DataItem,"nu_solicitud_aval uo")&"&strCodAvaluo="&DataBinder.Eval(Container.Da taItem,"co_avaluo")&"&strCodMetodoAvaluo="&DataBin der.Eval(Container.DataItem,"nb_metodo_avaluo")%>' runat="server">

Auditoria Individual
</asp:HyperLink>

Y asi dependiendo del valor del campo VERLINK, muestra o no el link!!
Espero le sirva de ayuda a otras personas!!
  #14 (permalink)  
Antiguo 23/11/2004, 05:08
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Me alegro de que te haya funcionado así.

El problema con el código de antes era que no debía reconocer bien el valor del campo "in_avaluos_auditados" y, por eso nunca era igual a False o No o como lo tuvieras.

De hecho, el nuevo código que te funciona, es esencialmente lo mismo solo que ahora lo que recuperas es directamente el valor de un campo True/False.

El hecho de poner IIF(condición,si_verdadero,si_falso) es igual que lo anterior pero ahorrando lineas.

Bueno, el caso es que ya lo tienes. Felicidades.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #15 (permalink)  
Antiguo 23/11/2004, 11:51
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 20 años, 5 meses
Puntos: 0
Saludos Bravenap, sabes que estoy aplicando lo del link condicional, ahora con el valor del campo "apto", que si es igual a cero, no me muestre el link, pero veo que en la consulta el campo booleano que coloque no muestra el valor que debe, lo estoy haciendo asi:

SELECT nu_cedula_aval,isnull(apto,0) apto, isnull(avaluo_local,0) avaluo_local, isnull(oficina,0) oficina, isnull(terreno,0) terreno, isnull(casa_m,0) casa_m, isnull(casa_c,0) casa_c, isnull(edif_m,0) edif_m, isnull(edif_c,0) edif_c, isnull(galpon_m,0) galpon_m, isnull(galpon_c,0) galpon_c, isnull(estac,0) estac, isnull(totalxAvaluador,0) totalxAvaluador,
<b>case apto when '0' then 'FALSE' else 'TRUE' end VERLINK_local </b>

FROM AiMatriz_Avaluo_Temp WHERE co_auditoria = '42' GROUP BY nu_cedula_aval,apto,avaluo_local,oficina,terreno,c asa_m,casa_c,edif_m,edif_c,galpon_m,galpon_c, estac, totalxAvaluador

puedo hacer el case en caso que el valor sea igual a cero?? o solamente es con valores string(s,n)?
  #16 (permalink)  
Antiguo 23/11/2004, 12:52
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Yo de SQL ando un poquito escaso, así que con la consulta no te puedo ayudar.

De todas formas, si el campo es numérico, cuando hagas el Select Case no tendrías que tener ningún problema, salvo claro, que tendrías que quitar las comillas a la opción:

Case 0

en lugar de

Case "0"

¿Te sirve?
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #17 (permalink)  
Antiguo 23/11/2004, 13:14
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
puedo hacer el case en caso que el valor sea igual a cero?? o solamente es con valores string(s,n)?
En dado caso de que tu campo sea string y deseas compararlo con un int puedes hacer el casting en tu misma query: (me imagino que estamos hablando de T/SQL verdad..? )

Serías así

Cita:
...
CASE campo
WHEN CAST('0',INT) THEN 'TRUE'
WHEN CAST('1',INT) THEN 'FALSE'
ELSE 'FALSE'
END
...

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #18 (permalink)  
Antiguo 23/11/2004, 13:23
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 20 años, 5 meses
Puntos: 0
Hola, mi campo "apto" es numeric, no string, y necesito colocar en un campo booleano true/false dependiendo si es igual a cero, en ese caso no me serviria el casting, cierto?
  #19 (permalink)  
Antiguo 23/11/2004, 15:12
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Pues mas a favor.. entonces sería asi:

Cita:
...
CASE apto
WHEN 0 THEN 'TRUE'
WHEN 1 THEN 'FALSE'
END
...
  #20 (permalink)  
Antiguo 23/11/2004, 15:56
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 20 años, 5 meses
Puntos: 0
Rootk, no me vas a creer, resulta que el campo tiene es Null, no cero como yo creia por eso no entraba en el case, lo que pasa es que como coloque: SELECT nu_cedula_aval,isnull(apto,0) apto... , siempre que hacia la consulta veia cero, disculpa de verdad no me habia dado cuenta.
Como podria compararlo con "NULL"? lo estoy haciendo asi pero me dice que tengo error de conversion:

SELECT apto,
CASE apto
WHEN 'NULL' THEN 'TRUE'
ELSE 'FALSE'
END
As VERLINK_local
FROM AiMatriz_Avaluo_Temp
WHERE co_auditoria = '42'
  #21 (permalink)  
Antiguo 23/11/2004, 18:35
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
En ese caso harías un poco diferente tu case para obtener el campo de tu query:

Sería:


Cita:
SELECT
'apto' =
CASE
WHEN apto IS NULL THEN 'TRUE'
END
As VERLINK_local
FROM AiMatriz_Avaluo_Temp
WHERE co_auditoria = '42'
Respeta las comillas así como las pongo, ya que una es el texto y la otra es el nombre del campo.
  #22 (permalink)  
Antiguo 24/11/2004, 07:12
 
Fecha de Ingreso: diciembre-2003
Mensajes: 212
Antigüedad: 20 años, 5 meses
Puntos: 0
Gracias Rootk, ahora si me funciona, gracias por el apoyo y la paciencia.

Finalmente, me quedo asi para lo que necesito:
SELECT apto,
CASE
WHEN apto IS NULL THEN 'FALSE'
END
As VERLINK_local
FROM AiMatriz_Avaluo_Temp
WHERE co_auditoria = '42'
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 05:16.