Foros del Web » Programando para Internet » ASPX (.net) »

[SOLUCIONADO] Ejecutar GridView desde un botón en ASP.Net

Estas en el tema de Ejecutar GridView desde un botón en ASP.Net en el foro de ASPX (.net) en Foros del Web. Hoy requiero de su colaboración. Resulta que estoy creando una página Web en ASP.Net con VB. Y la base de datos con SQL Server 2008, ...
  #1 (permalink)  
Antiguo 06/10/2015, 10:56
 
Fecha de Ingreso: enero-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Ejecutar GridView desde un botón en ASP.Net

Hoy requiero de su colaboración.

Resulta que estoy creando una página Web en ASP.Net con VB. Y la base de datos con SQL Server 2008, pero lo que quiero es que mediante un botón al dar clic me traiga los datos de una consulta personalizada en SQL Server y me los muestre en un GridView, alguien que me ayude mil gracias.

Espero haberme explicado bien o estaré pendiente para contestar a sus inquietudes.
  #2 (permalink)  
Antiguo 16/10/2015, 13:49
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 12 años, 10 meses
Puntos: 17
Respuesta: Ejecutar GridView desde un botón en ASP.Net

Es sencillo, haz la consulta y colócala en una lista o un Dataset y haces esto:

GridView1.DataSource=DS(puede ser el data set o la lista);
GridView.DataBind();

ahora si estas manejando objetos y solo quieres que se muestren ciertos campos lo que tienes que hacer es editar las columnas de GridView y decirque AutoGenerateColumns=False y agregas columnas de tipo BoundField y en la propieda DataField le pones el nombre de la propiedad de tu objeto.

<asp:BoundField DataField="AlumnoId" HeaderText="ID" />

espero te sirva


Saludos!!!
  #3 (permalink)  
Antiguo 21/10/2015, 15:12
 
Fecha de Ingreso: enero-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Ejecutar GridView desde un botón en ASP.Net

alan_69niupi Gracias por tu respuesta.

sucede que estoy trabajando en una pagina web para informes.

para llegar al resultado final tengo que crear varias lineas de consulta y crear tablas temporales en SQL Server, para concatenar toda esa informacion, esto me funciona perfecto si lo hago en SQL Management, mi consulta es esta:


/** Estas lineas crea una tabla temporal en la cual guarda las impresiones realizadas por usuario segun la fecha establecidad**/
create table #TempoPrint1 (Usuario VARCHAR(100), Paginas_en_Simplex INT,Paginas_en_Duplex INT,Impresiones_a_BN INT,Impresiones_a_Color INT)
Insert Into #TempoPrint1(Usuario, Paginas_en_Simplex, Paginas_en_Duplex, Impresiones_a_BN,Impresiones_a_Color)
select JOB_lab_NTUserName as 'Usuario',
sum(Job_qty_SimplexPages) as 'Paginas en Simplex',
sum(JOB_qty_DuplexPages) as 'Paginas en Duplex',
sum(JOB_qty_BWPages) as 'Impresiones a B/N',
sum(JOB_qty_ColorPages) as 'Impresiones a Color'
from V_All
where JOB_lab_DocumentName not like 'Copy job' and JOB_lab_DocumentName not like '%Scan to folder%'
and JOB_lab_DocumentName not like '%Email to%'
and PRINTER_lab_ShareName not like '%Pull Print%'
and JOB_date_Submitted Between '20150804 10:25:00' and '20150901 08:37:59'
group by JOB_lab_NTUserName

/** Estas lineas crea una tabla temporal en la cual guarda las Copias realizadas por usuario segun la fecha establecidad**/
create table #TempoPrint2 (Usuario2 VARCHAR(100),Paginas_en_Simplex2 INT, Paginas_en_Duplex2 INT,Copias_a_BN INT,Copias_a_Color INT)
Insert Into #TempoPrint2 (Usuario2, Paginas_en_Simplex2, Paginas_en_Duplex2, Copias_a_BN, Copias_a_Color)
select JOB_lab_NTUserName as 'Usuario',
sum(Job_qty_SimplexPages) as 'Paginas en Simplex',
sum(JOB_qty_DuplexPages) as 'Paginas en Duplex',
sum(JOB_qty_BWPages) as 'Copias a B/N',
sum(JOB_qty_ColorPages) as 'Copias a Color'
from V_All
where JOB_lab_DocumentName like '%Copy Job%' and JOB_date_Submitted Between '20150804 10:25:00' and '20150901 08:37:59'
group by JOB_lab_NTUserName

/** Estas lineas crea una tabla temporal en la cual guarda los Escaner realizados por usuario segun la fecha establecidad**/
create table #TempoPrint3 (Usuario3 VARCHAR(100),Escaner INT)
Insert Into #TempoPrint3 (Usuario3, Escaner)
select JOB_lab_NTUserName as 'Usuario',
SUM(Job_qty_PrintedPages) as 'Escaner'
from V_All
where JOB_lab_DocumentName like '%Scan to folder%' and JOB_date_Submitted Between '20150804 10:25:00' and '20150901 08:37:59'
group by JOB_lab_NTUserName

/**Estas Lineas crea una tabla temporal y guarda la union de los Usuarios del #TempoPrint1 con los de #TempoPrint2**/
create table #TempoPrint4 (Usuarios VARCHAR(100))
Insert Into #TempoPrint4 (Usuarios)
select IsNull(A.Usuario,B.Usuario2) as Usuarios
from #TempoPrint1 as A full join #TempoPrint2 as B on A.Usuario=B.Usuario2
group by A.Usuario, B.Usuario2

/**Estas Lineas crea una tabla temporal y guarda la union de los Usuarios del #TempoPrint4 con los de #TempoPrint3**/
create table #TempoPrint5 (Usuarios VARCHAR(100))
Insert Into #TempoPrint5 (Usuarios)
select IsNull(C.Usuarios,D.Usuario3) as Usuarios
from #TempoPrint4 as C full join #TempoPrint3 as D on C.Usuarios=D.Usuario3
group by C.Usuarios, D.Usuario3

create table #TempoPrint6 (Usuarios VARCHAR(100), Paginas_en_Simplex int, Paginas_en_Simplex2 int, Paginas_en_Duplex int, Paginas_en_Duplex2 int, Impresiones_en_BN int, Impresiones_en_Color int, Copias_en_BN int, Copias_en_Color int, Escaner int)
Insert Into #TempoPrint6 (Usuarios, Paginas_en_Simplex, Paginas_en_Simplex2, Paginas_en_Duplex, Paginas_en_Duplex2, Impresiones_en_BN, Impresiones_en_Color, Copias_en_BN, Copias_en_Color, Escaner)
select #TempoPrint5.Usuarios,
isnull(Paginas_en_Simplex,0) as 'Paginas en Simplex',
isnull(Paginas_en_Simplex2,0) as 'Paginas en Simplex2',
isnull(Paginas_en_Duplex,0) as 'Paginas en Duplex',
isnull(Paginas_en_Duplex2,0) as 'Paginas en Duplex2',
isnull(Impresiones_a_BN,0) as 'Impresiones en BN',
isnull(Impresiones_a_Color,0) as 'Impresiones en Color',
isnull(Copias_a_BN,0) as 'Copias en BN',
isnull(Copias_a_Color,0) as 'Copias en Color',
ISNULL(Escaner,0) as 'Escaner'
from #TempoPrint5
full join #TempoPrint1 on (#TempoPrint5.Usuarios = #TempoPrint1.Usuario)
full join #TempoPrint2 on (#TempoPrint5.Usuarios = #TempoPrint2.Usuario2)
full join #TempoPrint3 on (#TempoPrint5.Usuarios = #TempoPrint3.Usuario3)
group by Usuarios, Paginas_en_Simplex, Paginas_en_Duplex, Impresiones_a_BN, Impresiones_a_Color, Copias_a_BN, Copias_a_Color,
Paginas_en_Simplex2, Paginas_en_Duplex2, Escaner


create table #TempoPrint7 (Usuarios VARCHAR(200), Nombres VARCHAR(200), C_Costos VARCHAR(200), Email VARCHAR(200), Detalle VARCHAR(200))
Insert Into #TempoPrint7 (Usuarios,Nombres, C_Costos, Email, Detalle)
select sccore.dbo.scUserInfo.UserLogon as 'Usuarios', sccore.dbo.scUserInfo.FullName as 'Nombres', HPACJA.dbo.V_UserCostCenter.lab_CostCenter as 'Centro de Costos',
sccore.dbo.scUserInfo.Email as 'E-Mail', sccore.dbo.scUserInfo.Description as 'Detalle'
from sccore.dbo.scUserInfo
inner join HPACJA.dbo.V_UserCostCenter on HPACJA.dbo.V_UserCostCenter.lab_User=sccore.dbo.sc UserInfo.UserLogon
group by UserLogon, FullName, lab_CostCenter, Email, Description
Update #TempoPrint7 set C_Costos=''
where C_Costos='Unspecified'


select #TempoPrint6.Usuarios, Isnull(#TempoPrint7.Nombres,'') as 'Nombres', Isnull(#TempoPrint7.C_Costos,'') as 'Centro de Costos', isnull(#TempoPrint7.Email,'') as Email, isnull(#TempoPrint7.Detalle,'')as Detalles,
sum(Paginas_en_Simplex) + SUM(Paginas_en_Simplex2) - ((sum(Paginas_en_Simplex) + SUM(Paginas_en_Simplex2) + (SUM(Paginas_en_Duplex) + SUM(Paginas_en_Duplex2))*2)-
(sum(Impresiones_en_BN) + SUM(Impresiones_en_Color) + sum(Copias_en_BN) + SUM(Copias_en_Color))) as 'Paginas en Simplex',
SUM(Paginas_en_Duplex) + SUM(Paginas_en_Duplex2) as 'Paginas en Duplex',
Impresiones_en_BN as 'Impresiones a BN',
Impresiones_en_Color as 'Impresiones a Color',
Copias_en_BN as 'Copias a BN',
Copias_en_Color as 'Copias a Color',
sum(Impresiones_en_BN) + sum(Impresiones_en_Color) + SUM(Copias_en_BN) +(Copias_en_Color) as 'Total Impresos',
Escaner as 'Digitalizaciones'
from #TempoPrint6
Left outer join #TempoPrint7 on #TempoPrint7.Usuarios=#TempoPrint6.Usuarios
group by #TempoPrint6.Usuarios, #TempoPrint7.Nombres, #TempoPrint7.C_Costos, #TempoPrint7.Email, #TempoPrint7.Detalle,
Impresiones_en_BN, Impresiones_en_Color, Copias_en_BN, Copias_en_Color, Escaner


Drop table #TempoPrint1
Drop table #TempoPrint2
Drop table #TempoPrint3
Drop table #TempoPrint4
Drop table #TempoPrint5
Drop table #TempoPrint6
Drop table #TempoPrint7

Ahora como puedo llevar esto para que se ejecute en la web que estoy haciendo y me muestre el resultado final en un GridView, teniendo en cuenta que las fechas de las consultas de SQL las quiero que las tome de un textbox que el usuario le daria y despues a un boton.

le agradezco cualquier consejo y su ayuda ya que llevo mas de un mes tratando por todos los medios y no consigo hacerlo funcionar.

cualquier inquietud estare atento a reponderle.
  #4 (permalink)  
Antiguo 23/10/2015, 08:46
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 12 años, 10 meses
Puntos: 17
Respuesta: Ejecutar GridView desde un botón en ASP.Net

Puedes hacer de la siguiente manera
Crear una clase donde tengas las propiedades que necesites que son los capos que necesitas mostrar
public class Alumno{
public AlumnoID{ get; set;}
public NombreAlumno { get; set;}
public CorreoAlumno { get; set;}
}

cada propiedad puede representar un campo en tu tabla alumnos, pones las propiedades que necesites para que muestren en el GridView

Ahora la consulta la puedes hacer de esta manera

public class ConsultasAlumnos{

public List<Alumno> Consultar(SQLConnection connection, Alumno alumno)
{//El SQLConnection lo puedes cambiar según el tipo de conexion a base de datos que uses
SqlCommand sqlCommand=null;
sqlCommand=connection.CreateCommand();
string qryConsulta=string.Empty;
qryConsulta+="ARMA TODO EL QRY QUE NECESITES";
//Por ejemplo "Select a.AlumnoId, b.CuentaAlumno, etc"
string qryWhere=string.Empty;
if(alumno!=null)
{
if(alumno.AlumnoID!=null)
{
qryWhere+="AND AlumnoID=@Alumno_ID";
SqlParameter sqlParameter=sqlCommand.CreateParameter();
sqlParamater.ParameterName="@Alumno_ID";
sqlParameter.Value=alumno.AlumnoID;
sqlParameter.DbType=DbType.Int32;
sqlCommand.Parameter.Add(sqlParameter);
}//Este if lo hace por cada propiedad para verificar tipo string en el if pones
// if(!string.IsNotNullOrEmpty(alumno.Nombre))
}
if(qryWhere.Length>0)
{
if (qryWhere.StartsWith("AND "))
{
qryWhere = qryWhere.Substring(4);
}
else
{
if (qryWhere.StartsWith("OR "))
{
qryWhere = qryWhere.Substring(3);
}
else
{
if (qryWhere.StartsWith(","))
{
qryWhere = qryWhere.Substring(1);
}
}
}
qryWhere= " WHERE " + qryWhere;
}
DataSet ds=new DataSet();
SqlDataAdapter adapter;
adapter.SelectCommand=sqlCommand;
sqlConsulta+=sqlWhere;
sqlCommand.CommanText=sqlConsulta;
sqlCommand.ExecuteNonQuery();
adapter.Fill(ds, "NombreDeTabla");//Es el nombre de la tabla que apareceta en el DataSet
//Hasta este punto puede asignar ese Data set al DataSource del GridView
//Si quieres convertirlo en una lista de alumno hacer lo siguiente

List<Alumno> lista=new List<Alumno>();
Alumno objetoAlumno;
foreach(DataRow row in ds.Table[0].Rows)
{
objetoAlumno=new Alumno();
if(!row.IsNull("AlumnoID")) //Esto es cada campo que hagas que aparezca en la consulta
objetoAlumno.AlumnoId=(Int32)Convert.ChangeType(ro w["AlumnoID"], typeof(Int32));
//Lo haces por cada propiedad de la clase Alumno que deben ser las mismas que los campos que solictas en el query
//Al terminar todos los campos
//Fijate bien del Casteo
lista.Add(objetoAlumno);
}
//Y al final
return lista
}
}


de esta manera obtienes un DataSet o una Lista de objeto que puedes asignar al DataSource del GridView.

Espero te sirva

Saludos!!!
  #5 (permalink)  
Antiguo 27/10/2015, 10:27
 
Fecha de Ingreso: enero-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Información Respuesta: Ejecutar GridView desde un botón en ASP.Net

Hola Experto; gracias por tu pronta respuesta.

resuta que he tratado por todo lado y no he podido hacer que me funcione, he probado con este codigo que adjunto pero si hago una consulta de un solo "select * from V_All", me funciona perfecto pero al agregar parametros a la consulta no me corre y me sale el siguiente error a ver si me puedes ayudar:

MI CODIGO:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Me.Consulta1()
Label1.Text = "Consulta Exitosa"
End Sub

Public Sub Consulta1()
'creamos la cadena de conexion
Dim strConexion As String
Dim valor As Integer = Session("chequelo")
strConexion = "Data Source=LUIZ_GALVIS;Initial Catalog=HPACJA;Integrated Security=True"

'Creamos el objeto conexion para enlazar con el servidor de datos
Dim objConexion As New SqlConnection(strConexion)

'creamos la secuencia sql que devuelve los datos deseados
Dim strSQL As String
strSQL = "/** Estas lineas crea una tabla temporal en la cual guarda las impresiones realizadas por usuario segun la fecha establecidad**/" +
"create table TempoPrint1 (Usuario VARCHAR(100), Paginas_en_Simplex INT,Paginas_en_Duplex INT,Impresiones_a_BN INT,Impresiones_a_Color INT)" +
"Insert Into TempoPrint1(Usuario, Paginas_en_Simplex, Paginas_en_Duplex, Impresiones_a_BN,Impresiones_a_Color)" +
"select JOB_lab_NTUserName as 'Usuario', " +
"sum(Job_qty_SimplexPages) as 'Paginas en Simplex'," +
"sum(JOB_qty_DuplexPages) as 'Paginas en Duplex'," +
"sum(JOB_qty_BWPages) as 'Impresiones a B/N'," +
"sum(JOB_qty_ColorPages) as 'Impresiones a Color'" +
"from V_All" +
"where JOB_lab_DocumentName not like 'Copy job' and JOB_lab_DocumentName not like '%Scan to folder%' " +
"and JOB_lab_DocumentName not like '%Email to%' " +
"and PRINTER_lab_ShareName not like '%Pull Print%'" +
"and JOB_date_Submitted Between '20150804 10:25:00' and '20150901 08:37:59'" +
"group by JOB_lab_NTUserName" +
"Selecte * from TempoPrint1 "

'Instanciamos el objeto command
'Recibe la secuencia a ejecutar y la conexion
Dim objCommand As New SqlCommand(strSQL, objConexion)

'Creamos el Objeto DataAdapter para rellenar el Dataset
Dim objAdapter As New SqlDataAdapter

'Configuramos la propiedad selectCommand para que ejecute nuestra consulta
objAdapter.SelectCommand = objCommand

'Abrimos la Conexion
objConexion.Open()

'DataSet para almacenar Datos
Dim objDS As New DataSet

'Rellenamos el DataTable del DataSet mediante el metodo Fill
'Del DataAdapter
objAdapter.Fill(objDS, "V_All")

'Cerramos la Conexion
objConexion.Close()

'LLenamos el Control GridView con los datos que almacenamos en el DataSet
GridView1.DataSource = objDS
GridView1.DataBind()
End Sub


EL ERROR:

el error se da en:
objAdapter.Fill(objDS, "V_All")

Mensaje que muestra: Sintaxis incorrecta cerca de la palabra clave 'not'.


Gracias por tu ayuda.
  #6 (permalink)  
Antiguo 27/10/2015, 15:49
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 12 años, 10 meses
Puntos: 17
Respuesta: Ejecutar GridView desde un botón en ASP.Net

Depura el código y verifica que se ejecuta en el command, revisa todo el query que se genera. A veces ocurre que se pone una coma de más un punto, etc.

Saludos!!!
  #7 (permalink)  
Antiguo 28/10/2015, 13:24
 
Fecha de Ingreso: enero-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Sonrisa Respuesta: Ejecutar GridView desde un botón en ASP.Net

Hola Alan; gracias por tu tiempo y por su ayuda.

Resulta que ya hice eso de la depuracion pero el error se genera en la linea 62 que corresponde al objAdapter.Fill(objDS, "V_All"), y me da el mensaje de "Sintaxis incorrecta cerca de la palabra clave 'not' ".

parece que el Fill no reconoce el not de la consulta, no se si allá alguna forma de que lo reconozca.

esta misma consulta la ejecuto directamente desde el SQL y funciona perfecto.

no se que pueda ser??.
  #8 (permalink)  
Antiguo 28/10/2015, 15:07
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 12 años, 10 meses
Puntos: 17
Respuesta: Ejecutar GridView desde un botón en ASP.Net

Hola,
por que puedo ver, aparentemente esta bien la consulta, ahora antes de iniciar una linea deja espacios en blanco.
Me la impresión de que cuando se crea la cadena de texto con estas lineas
Cita:
"from V_All" +
"where JOB_lab_DocumentName not like 'Copy job' and JOB_lab_DocumentName not like '%Scan to folder%' " +
que da así:
Cita:
from V_Allwhere JOB_lab_DocumentName not like 'Copy job' and JOB_lab_DocumentName not like '%Scan to folder%'
entonces cuando le dices from reconoce una tabla llamada V_Allwhere pones el nombre de un campo y al no tener un where el not no se esta reconociendo, ponle espacio al inicio y al final de cada cadena de texto.

otra cosa que note es esto
Cita:
"Selecte * from TempoPrint1 "
creo que debe ser SELECT, tienes una e de más


saludos!!!!
  #9 (permalink)  
Antiguo 29/10/2015, 11:12
 
Fecha de Ingreso: enero-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Ejecutar GridView desde un botón en ASP.Net

Alan Mil gracias por tus respuestas y ayuda, efectivamente eran los espacios y ya logre corregir eso, seguiré con mi proyecto ya que estaba trancado por ese problema, si me surge algo nuevo volveré a pedir ayuda.

mil gracias por todo fue una gran ayuda.

Etiquetas: asp, gridview, server, sql
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 16:15.