hola a todos a ver si alguien me puede ayudar necesito ordenar los datos en forma muy parecida como lo hace hotmail en su buzon de entrada alguien me podria ayudar
se los agradesco de antemano
| |||
![]() hola a todos a ver si alguien me puede ayudar necesito ordenar los datos en forma muy parecida como lo hace hotmail en su buzon de entrada alguien me podria ayudar se los agradesco de antemano |
| |||
quiero q al igual que hotmail las puedas ordenar por fecha por mensaje etc ya que cuando tu presionas el titulo te los va ordenando eso mismo quiero hacer pero con los siguientes campos ubicacion equipo modelo serie inventario item compra valor |
| ||||
para hacer q se puda ordenar por los titulos tienes q activar la ordenacion en el editor de propiedades hay q editar este metodo sub Sort_Grid(sender As Object, e As DataGridSortCommandEventArgs) Dim dv As System.Data.DataView = New System.Data.DataView() dv=session("dv") dv.sort=e.SortExpression datagrid1.datasource=dv datagrid1.databind session("dv")=dv end sub yo lo tengo editao asi paraa guardar la ordenacion q tengo de nates en session,para cdo luego quiero ordenarlo otra vez por otro campo ordenara ese esa columna manteniendo las anteriores ordenaciones,en cambio si quieres q te ordene por un columna,y cuado pinceh en la otra se olvide de la anterior ordenacion no guardes en session como hago yo. No se si me entiendes Ha si hace spaginacion se olvidara de la ordenacion si no lo almacenas en session y se lo asingas en la paginacion con esa ordenacion. |
| ||||
te recomiendo que leas esto: http://msdn.microsoft.com/library/sp...webcontrol.asp |
| |||
tengo el siguiente codigo para ordenar los datos de mi datagrid pero me arroja el siguiente error "se esperaba un identificador" alguien me podria explicar a que se refiere. Sub DataGrid1_sortcommand(byval source as object,_ byval e as system.web.ui.webcontrols.datagridsortcommandevent args) _ handles datagrid1.sortcommand dataview1.sort=e.sortexpression datagrid1.databind() End Sub sub Sort_Grid(sender As Object, e As DataGridSortCommandEventArgs) Dim dv As System.Data.DataView = New System.Data.DataView() dv=session("dv") dv.sort=e.SortExpression datagrid1.datasource=dv datagrid1.databind session("dv")=dv end sub |
| ||||
Antes con las prisas q me piraba a comer.... Lo saco de <asp:DataGrid id="DataGrid1" runat="server" AllowSorting="True" OnSortCommand="Sort_Grid" CellPadding="3" BackColor="White" BorderWidth="1px" GridLines="Horizontal" BorderStyle="None" OnPageIndexChanged="DataGrid1_SelectedIndexChanged " BorderColor="#E7E7FF" AllowPaging="True"> OnSortCommand el nombre (sort_Grid) es lo de menos onpageindexchanged es el metodo o evento de paginar |
| |||
como veras lo tengo asi como tu dices pero igual me arroga el error de "se esperaba un identificador" <asp:DataGrid id="DataGrid1" runat="server" OnSelectedIndexChanged="DataGrid1_SelectedIndexCha nged" AllowSorting="True" OnSortCommand="Sort_Grid" SelectedIndex="1" Font-Size="Smaller" onpageindexchanged="mi_cambio" AllowPaging="True" PageSize="15"> <HeaderStyle font-size="Larger" horizontalalign="Center" forecolor="Gray" verticalalign="Middle" backcolor="Thistle"></HeaderStyle> <PagerStyle backcolor="Silver" pagebuttoncount="15" mode="NumericPages"></PagerStyle> <ItemStyle backcolor="MistyRose"></ItemStyle> <Columns> <asp:BoundColumn SortExpression="datos"></asp:BoundColumn> </Columns> </asp:DataGrid> |
| ||||
vamos a ver 1-esto no te esta haciendo nada : Sub DataGrid1_sortcommand(byval source as object,_ byval e as system.web.ui.webcontrols.datagridsortcommandevent args) _ handles datagrid1.sortcommand dataview1.sort=e.sortexpression datagrid1.databind() End Sub por q el q te mira sera este OnSortCommand="Sort_Grid" es decir el otro 2-deberas tener por supuesta antas el dv (dataview) enlazado con alguna tabla de un dataset y para q te develva algo session("dv") priemro hay q asignarle dv a esa variable 3-Pon solo esto OnSelectedIndexChanged="DataGrid1_SelectedIndexCha nged" Si exite ese metodo en tu codigo por qlo buscara y si no lo encuentra,error |
| ||||
te escribo mi ejemplo completo en la que el dataview en llaza con latabla alumnos de entre varias tabkas q tiene mi adtaset cargadas sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load if not ispostback then dim ds as System.Data.DataSet ds=dataset() SESSION("ds")=ds Dim dv As System.Data.DataView = New System.Data.DataView(ds.tables("TALUMNOS")) DataGrid1.DataSource=DV DataGrid1.databind() SESSION("dv")=dv end if 'dim cn as System.Data.SqlClient.SqlConnection end sub function conexion() as System.Data.SqlClient.SqlConnection dim cn as System.Data.SqlClient.SqlConnection cn=New System.Data.SqlClient.SqlConnection() cn.ConnectionString="server=E1;User Id=yo;Database=ESql" cn.open() cn.close() return cn end function function dataset() as System.Data.DataSet dim cn as System.Data.SqlClient.SqlConnection cn=conexion() cn.open() Dim adap1 as System.Data.SqlClient.SqldataAdapter Dim adap2 as System.Data.SqlClient.SqldataAdapter Dim adap3 as System.Data.SqlClient.SqldataAdapter Dim adap4 as System.Data.SqlClient.SqldataAdapter Dim adap5 as System.Data.SqlClient.SqldataAdapter Dim adap6 as System.Data.SqlClient.SqldataAdapter Dim ds as System.Data.DataSet adap1=new System.Data.SqlClient.SqlDataAdapter("Select * from EMPRESAS",cn) adap2=new System.Data.SqlClient.SqlDataAdapter("Select * from ALUMNOS",cn) adap3=new System.Data.SqlClient.SqlDataAdapter("Select * from ALUMNOS_PRIVADOS",cn) adap4=new System.Data.SqlClient.SqlDataAdapter("Select * from ALUMNOS_EMPRESAS",cn) adap5=new System.Data.SqlClient.SqlDataAdapter("Select * from ALUMNOS_FOCUPACIONAL",cn) adap6=new System.Data.SqlClient.SqlDataAdapter("Select * from ALUMNOS_FNOCONTINUA",cn) ds=new System.Data.DataSet() adap1.Fill(ds,"TEMPRESAS") adap2.Fill(ds,"TALUMNOS") adap3.Fill(ds,"TALUMNOSP") adap4.Fill(ds,"TALUMNOSE") adap5.Fill(ds,"TALUMNOSFO") adap6.Fill(ds,"TALUMNOSFNC") cn.close() return ds end function Sub DataGrid1_SelectedIndexChanged(sender As Object, e As datagridpagechangedEventArgs) dim ds as System.Data.DataSet ds=session("ds") Dim dv As System.Data.DataView = New System.Data.DataView() dv=session("dv") datagrid1.datasource=dv DATAGRID1.CURRENTPAGEINDEX=e.NEWPAGEINDEX datagrid1.databind End Sub sub Sort_Grid(sender As Object, e As DataGridSortCommandEventArgs) dim ds as System.Data.DataSet ds=session("ds") Dim dv As System.Data.DataView = New System.Data.DataView() dv=session("dv") dv.sort=e.SortExpression datagrid1.datasource=dv datagrid1.databind session("dv")=dv end sub y en el html tengo: <form runat="server"> <asp:DataGrid id="DataGrid1" runat="server" AllowSorting="True" OnSortCommand="Sort_Grid" CellPadding="3" BackColor="White" BorderWidth="1px" GridLines="Horizontal" BorderStyle="None" OnPageIndexChanged="DataGrid1_SelectedIndexChanged " BorderColor="#E7E7FF" AllowPaging="True"> <FooterStyle forecolor="#4A3C8C" backcolor="#B5C7DE"></FooterStyle> <HeaderStyle font-bold="True" forecolor="#F7F7F7" backcolor="#4A3C8C"></HeaderStyle> <PagerStyle nextpagetext="siguiente" prevpagetext="anterior" horizontalalign="Right" forecolor="#4A3C8C" position="Top" backcolor="#E7E7FF" mode="NumericPages"></PagerStyle> <SelectedItemStyle font-bold="True" forecolor="#F7F7F7" backcolor="#738A9C"></SelectedItemStyle> <AlternatingItemStyle backcolor="#F7F7F7"></AlternatingItemStyle> <ItemStyle forecolor="#4A3C8C" backcolor="#E7E7FF"></ItemStyle> <Columns> <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Update" HeaderText="Update" CancelText="Cancel" EditText="Edit"></asp:EditCommandColumn> <asp:ButtonColumn Text="Delete" HeaderText="Delete" CommandName="Delete"></asp:ButtonColumn> <asp:TemplateColumn> <ItemTemplate> <asp:LinkButton runat="server" Text="Select" CommandName="Select" CausesValidation="false"></asp:LinkButton> </ItemTemplate> </asp:TemplateColumn> </Columns> </asp:DataGrid> </form> |
| |||
te envio mi codigo completo para q lo revices y asi puedas indicarme lo q debo hacer <%@ Page Language="VB" Debug="True" %> <script runat="server"> ' Insert page code here Function MyQueryMethod(ByVal ubicacion As String) As System.Data.DataSet Dim connectionString As String = "server=xxxxxxx; user id='xxxxx'; password=xxxxx; database=xxxxxxxx Dim dbConnection As System.Data.IDbConnection = New System.Data.SqlClient.SqlConnection(connectionStri ng) Dim queryString As String = "SELECT [Inventario].[Lugar], [Inventario].[Equipo], [Inventario].[Modelo], [Inven"& _ "tario].[Serie], [Inventario].[Inventario], [Inventario].[Item] FROM [Inventario]"& _ " WHERE ([Inventario].[Ubicacion] = @Ubicacion) order by lugar " Dim dbCommand As System.Data.IDbCommand = New System.Data.SqlClient.SqlCommand dbCommand.CommandText = queryString dbCommand.Connection = dbConnection Dim dbParam_ubicacion As System.Data.IDataParameter = New System.Data.SqlClient.SqlParameter dbParam_ubicacion.ParameterName = "@Ubicacion" dbParam_ubicacion.Value = ubicacion dbParam_ubicacion.DbType = System.Data.DbType.String dbCommand.Parameters.Add(dbParam_ubicacion) Dim dataAdapter As System.Data.IDbDataAdapter = New System.Data.SqlClient.SqlDataAdapter dataAdapter.SelectCommand = dbCommand Dim dataSet As System.Data.DataSet = New System.Data.DataSet dataAdapter.Fill(dataSet) Return dataSet End Function Sub pagerbuttonclick(sender As Object, e As EventArgs) dim arg as string = sender.commandargument select arg case "siguiente" if (datagrid1.currentpageindex < (datagrid1.pagecount - 1)) then datagrid1.currentpageindex+ =1 end if case "anterior" if (datagrid1.currentpageindex >0) then datagrid1.currentpageindex- =1 end if case "ultima" datagrid1.currentpageindex= (datagrid1.pagecount -1) case "Primera" datagrid1.currentpageindex=0 end select datagrid1.datasource=myquerymethod(DropDownList1.S electedItem.Text()) datagrid1.databind End Sub sub mi_cambio(sender as object, e as system.web.ui.webcontrols.datagridpagechangedevent args) datagrid1.currentpageindex=e.newpageindex datagrid1.datasource=myquerymethod(DropDownList1.S electedItem.Text()) datagrid1.databind end sub Function MyQueryMethod2() As System.Data.DataSet Dim connectionString As String = "server=xxxxxxx; user id='xxxxx'; password=xxxxxx; database=xxxxxxxx Dim dbConnection As System.Data.IDbConnection = New System.Data.SqlClient.SqlConnection(connectionStri ng) Dim queryString As String = "SELECT DISTINCT [Inventario].[Ubicacion] FROM [Inventario]" Dim dbCommand As System.Data.IDbCommand = New System.Data.SqlClient.SqlCommand dbCommand.CommandText = queryString dbCommand.Connection = dbConnection Dim dataAdapter As System.Data.IDbDataAdapter = New System.Data.SqlClient.SqlDataAdapter dataAdapter.SelectCommand = dbCommand Dim dataSet As System.Data.DataSet = New System.Data.DataSet dataAdapter.Fill(dataSet) Return dataSet End Function sub page_load(sender as object, e as eventargs) if not page.ispostback then dropdownlist1.datatextfield = "ubicacion" dropdownlist1.datasource=myquerymethod2() dropdownlist1.databind() end if end sub Sub DropDownList1_SelectedIndexChanged(sender As Object, e As EventArgs) datagrid1.datasource=myquerymethod(dropdownlist1.i tems(dropdownlist1.selectedindex).text) datagrid1.databind() End Sub Sub Button1_Click(sender As Object, e As EventArgs) datagrid1.datasource=myquerymethod(cstr(textbox1.t ext)) datagrid1.databind() End Sub Sub DropDownList2_SelectedIndexChanged(sender As Object, e As EventArgs) datagrid1.datasource=myquerymethod(dropdownlist1.i tems(dropdownlist1.selectedindex).text) DataGrid1.PageSize=CInt(DropDownList2.SelectedItem .Value) datagrid1.databind() End Sub sub Sort_Grid(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEvent Args) Dim dv As System.Data.DataView = New System.Data.DataView() dv=session("dv") dv.sort=e.SortExpression datagrid1.datasource=dv datagrid1.databind session("dv")=dv end sub </script> <html> <head> </head> <body> <ASP: Now="Now" ()> <form runat="server"> <p align="center"> <strong><u>INVENTARIO POR UBICACIÓN</u></strong> </p> <p></p> <p></p> <p> Ubicación: <asp:DropDownList id="DropDownList1" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedInde xChanged" AutoPostBack="True"></asp:DropDownList> <asp:LinkButton id="btnfirst" onclick="pagerbuttonclick" runat="server" CommandArgument="Primera">Primera Página</asp:LinkButton> <asp:LinkButton id="btnprev" onclick="pagerbuttonclick" runat="server" CommandArgument="anterior">Página Anterior</asp:LinkButton> <asp:LinkButton id="btnnex" onclick="pagerbuttonclick" runat="server" CommandArgument="siguiente">Página Siguiente</asp:LinkButton> <asp:LinkButton id="btnlast" onclick="pagerbuttonclick" runat="server" CommandArgument="ultima">Última Página</asp:LinkButton> <asp:DropDownList id="DropDownList2" runat="server" OnSelectedIndexChanged="DropDownList2_SelectedInde xChanged" AutoPostBack="True"> <asp:ListItem Value="1">1</asp:ListItem> <asp:ListItem Value="2">2</asp:ListItem> <asp:ListItem Value="3">3</asp:ListItem> <asp:ListItem Value="4">4</asp:ListItem> <asp:ListItem Value="5">5</asp:ListItem> <asp:ListItem Value="6">6</asp:ListItem> <asp:ListItem Value="7">7</asp:ListItem> <asp:ListItem Value="8">8</asp:ListItem> <asp:ListItem Value="9">9</asp:ListItem> <asp:ListItem Value="10">10</asp:ListItem> <asp:ListItem Value="11">11</asp:ListItem> <asp:ListItem Value="12">12</asp:ListItem> <asp:ListItem Value="13">13</asp:ListItem> <asp:ListItem Value="14">14</asp:ListItem> <asp:ListItem Value="15">15</asp:ListItem> <asp:ListItem Value="16">16</asp:ListItem> <asp:ListItem Value="17">17</asp:ListItem> <asp:ListItem Value="18">18</asp:ListItem> <asp:ListItem Value="19">19</asp:ListItem> <asp:ListItem Value="20">20</asp:ListItem> <asp:ListItem Value="21">21</asp:ListItem> <asp:ListItem Value="22">22</asp:ListItem> <asp:ListItem Value="23">23</asp:ListItem> <asp:ListItem Value="24">24</asp:ListItem> <asp:ListItem Value="25">25</asp:ListItem> <asp:ListItem Value="26">26</asp:ListItem> <asp:ListItem Value="27">27</asp:ListItem> <asp:ListItem Value="28">28</asp:ListItem> <asp:ListItem Value="29">29</asp:ListItem> <asp:ListItem Value="30">30</asp:ListItem> </asp:DropDownList> </p> <p> <asp:DataGrid id="DataGrid1" runat="server" AllowSorting="True" OnSortCommand="Sort_Grid" SelectedIndex="1" Font-Size="Smaller" onpageindexchanged="mi_cambio" AllowPaging="True" PageSize="15"> <HeaderStyle font-size="Larger" horizontalalign="Center" forecolor="Gray" verticalalign="Middle" backcolor="Thistle"></HeaderStyle> <PagerStyle backcolor="Silver" pagebuttoncount="15" mode="NumericPages"></PagerStyle> <ItemStyle backcolor="MistyRose"></ItemStyle> <Columns> <asp:BoundColumn SortExpression="datos"></asp:BoundColumn> </Columns> </asp:DataGrid> <asp:TextBox id="TextBox1" runat="server" Visible="False"></asp:TextBox> <asp:Button id="Button1" runat="server" Visible="False" Text="Button"></asp:Button> </p> </form> </ASP:> </body> </html> |
| ||||
bueno,borra mi metodo q te va dar erro seguro ya q las variables de sseion esta vacias,t elo he mandao para q veas como se podria hacer pero : borra esto: sub Sort_Grid(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEvent Args) Dim dv As System.Data.DataView = New System.Data.DataView() dv=session("dv") dv.sort=e.SortExpression datagrid1.datasource=dv datagrid1.databind session("dv")=dv nd sub y ponlo de eesta manera d emomento: sub Sort_Grid(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEvent Args) datagrid1=(lo q le quieras enlazar) datagrid1.currentoageindex=e.newpageindex datagrid1.databind end sub Es simplemente para q te deje ordenar Lo q yo te queria esplicar es q si utilizas variables de session Lo q haces es guardar el dataset o el dataview en una variable,esto lo haces para recordar como estaba ordenado,por que cdo realizas paginacion o vuelves a ordenar,veras que no recuerda las anteriores ordenacioes q haya hecho.Ya q la asignacion es nueva como puedes ver aki : sub mi_cambio(sender as object, e as system.web.ui.webcontrols.datagridpagechangedevent args) datagrid1.currentpageindex=e.newpageindex datagrid1.datasource=myquerymethod(DropDownList1.S electedItem.Text()) datagrid1.databind end sub cuando hagas painacion vuelves a enlazar,en este enlace y sino lo enlazas con algo q recuerde la ordenacion no lo recordora,de hay mi forma de hacerlo,q ya te he mandao antes |
| |||
mira lo deje de la siguiente forma sub Sort_Grid(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEvent Args) datagrid1=myquerymethod() datagrid1.currentoageindex=e.newpageindex datagrid1.databind end sub pero ahora me arroga el siguiente error ¿se debera a que debo poner los parametros? Error de compilación Descripción: Error durante la compilación de un recurso requerido para dar servicio a esta solicitud. Revise los detalles de error específicos siguientes y modifique el código fuente en consecuencia. Mensaje de error del compilador: BC30002: El tipo 'System.Web.UI.WebControls.DataGridSortCommandEven t' no está definido. Error de código fuente: Línea 116: Línea 117: Línea 118: sub Sort_Grid(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEvent Args) Línea 119: datagrid1=myquerymethod() Línea 120: datagrid1.currentoageindex=e.newpageindex |
| |||
ahora mi duda es si yo quiero enlazar de la tabla los siguientes campos Ubicacion;equipo;modelo;serie;inventario;item como debo hacerlo ya q pense hacerlo poniendo datagrid1= myquerymethod pero me reclama por los parametros de ubicacion que con lo que yo muestro el datagrid ya que yo eligo la ubicacion atraves de un dropdownlist y haci muestro el datagrid aqui te envio el ejemplo que me enviaste sub Sort_Grid(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEvent Args) datagrid1=(lo q le quieras enlazar) datagrid1.currentoageindex=e.newpageindex datagrid1.databind end sub |
| ||||
Dos posibidaes tienes Priemro q en la cosulta solo carges en la select esos campos y le digas en el editor d epropiedades q cree las columnas automaticamente,te cargara esas columnas q vengan en la select 2 q crees tus porpieas columnas en el editor y les digas el nombre de la columna d ela tabla de la cual van ir enlazadas. Lo mejor priemro es q te leas un manual,antes t ehan pasao un link,q si no cad apasito q kieras dar no vas a saber |
| ||||
bueno estonces concretame cual es tu duda Lo de las columnas??? Te sale ya algo en de datagrid?? ya sabes como fuciona lo de las variables de sesion,o el dataview,el dataset.... No me cuesta nada ponerte una vez too el codigo,pero tampoco voy a estar siempre aki metido y si te lo hago yo tampoco vas a aprender nada,de lo q se trata es de enteder como van las cosas. |
| |||
totalmente de acuerdo con lo q has dicho mi duda es como enlazo las columnas del datagrid a los campos que te nombre endenante. de todas maneras si me envias el codigo completo no hago copiar y pegar ya que a medida que voy leyendo voy haciendo lo que dice de hecho el codigo completo que te envie lo hice sola pero esta parte me ha complicado la existencia. |
| ||||
ok Supongo q sabaras q cdo pinchas encima del datagrin aparece debajo delas propiedades tipicas q tevienen un nombre en azul q pondra editor d eprpiedades o property builder. Pinchas ahi Dentro habra una opcion q servira para q todas las columnas q pides en tu consulta Dim queryString As String = "SELECT [Inventario].[Lugar], [Inventario].[Equipo], [Inventario].[Modelo], [Inven"& _ "tario].[Serie], [Inventario].[Inventario], [Inventario].[Item] FROM [Inventario]"& _ " WHERE ([Inventario].[Ubicacion] = @Ubicacion) order by lugar " Dim dbCommand As System.Data.IDbCommand = New System.Data.SqlClient.SqlCommand dbCommand.CommandText = queryString dbCommand.Connection = dbConnection lugar,equipo,modelo... te parezcan en tu datagrid,esa opcion pondra algo asi como cargar columnas automaticamente y estara en la zona de columns. otra opcion es no activar esto,ir añadiendo columnas manualmente y te dara la opcion de enlazar esa columna q has añadido con un nombre,ese nombre debera se rigual a uno de los q en la consulta anterior te devuleve,por ejemplo Lugar.... |
| |||
si lo trate de hacer antes de enviarte el codigo pero no me resulto al contario me hecho a perder todo lo que ya tenia hecho. mira ya se que es demasiado grande mi patudez pero necesito entregar este trabajo hoy a mi jefe pq no me envias el codigo completo y yo me las arreglo aca para entenderlo no sabes como te lo agradecere |
| ||||
he llegao ahora a casa y aki no tengo el vb .net,ni el web matrix,lo tengo donde estoy haciendo el proyecto de finde carrera. si me dices q te muestra el datagrid cdo se carga la pagina,le hecho un vistazo al codigo q has escrito antes y te digo Aki no puedo hacer pruebas,sino probaba tu codigo con una tabla mia |