1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Paginação asp.net

Discussão em 'Web Development' iniciada por nilpedro, 2 de Agosto de 2007. (Respostas: 8; Visualizações: 1050)

  1. Bom dia,

    Estou com algumas dificuldades em listar dados de query paginadados, consigo pagina-los por paginas, mas quando clico nos num pag. para movimentar para proxima os dados não mudam e/ou aparecem acrescentados no final da lista.

    o Codigo é o seguinte:

    PHP:
    <asp:GridView ID="GridView1" runat="server" AllowPaging="True" DataSourceID="ObjectDataSource1" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None"
    <
    Columns>
    <
    asp:BoundField DataField="Data" HeaderText="Data" SortExpression="Data">
    <
    ItemStyle Width="150px" />
    </
    asp:BoundField
    <
    asp:BoundField DataField="Projecto" HeaderText="Projecto" SortExpression="Projecto" />
    <
    asp:BoundField DataField="Nome" HeaderText="Nome" SortExpression="Nome">
    <
    ItemStyle Width="250px" />
    </
    asp:BoundField>
    <
    asp:BoundField DataField="Viagem" HeaderText="Viagem" SortExpression="Viagem" />
    <
    asp:BoundField DataField="Km" HeaderText="Km" SortExpression="Km" />
    <
    asp:BoundField DataField="Observacoes" HeaderText="Observações" SortExpression="Observacoes" /> 
    </
    Columns>
    </
    asp:GridView>
    <
    asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="ConsultaRegistoTempos" TypeName="PaginarRegistoTempos" SelectCountMethod="RetornaTotalRegistoTempos" EnablePaging="True">
    </
    asp:ObjectDataSource
     
     
    o PaginarRegistoTempos.cs :
     
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Collections.Generic;
    ///<summary>
    /// PaginarProdutos
    ///<remarks>
    /// Autor: 
    /// Microsot 
    ///</remarks>
    ///</summary>
    public class PaginarRegistoTempos
    {
    private 
    int _TotalRegistoTempos 0;
    public 
    int RetornaTotalRegistoTempos()
    {
    return 
    _TotalRegistoTempos;
    }
     
    public 
    dsRegistoTempos.QRegistoTemposDataTable ConsultaRegistoTempos(int startRowIndexint maximumRows)
    {
    Nullable<intTotalRegistoTempos 0;
    dsRegistoTempos.QRegistoTemposDataTable RegistoTempos = new dsRegistoTempos.QRegistoTemposDataTable();
    dsRegistoTemposTableAdapters.QRegistoTemposTableAdapter Adapter = new dsRegistoTemposTableAdapters.QRegistoTemposTableAdapter();
    Adapter.Fill(RegistoTemposstartRowIndexmaximumRowsref TotalRegistoTempos);

    this._TotalRegistoTempos RegistoTempos.Count;
    return 
    RegistoTempos;
    }
    }
     
    Se alguem me pudesse ajudar agradeci :)
     
    Última edição pelo moderador: 2 de Agosto de 2007
  2. SoundSurfer

    SoundSurfer Power Member

    Experimenta não fazer bind à gridview, a ver se mostra ou nao os resultados... se não resultar, mostra onde é que estás a fazer o bind.

    EDIT:
    Acho que esta linha está a mais, comenta:

    this._TotalRegistoTempos = RegistoTempos.Count;

    o ObjectDataSource tem de devolver o total de registos.
     
  3. Mas eu nao estou a fazer nenhum Bind Grid, e se comentar essa linha então é que não aparece nenhum registo (só cabeçalho).


    Só tenho mais este ficheiro no projeto dsRegistoTempos.xsd:

    PHP:
    <?xmlversion="1.0"encoding="utf-8"?>
    <xs:schemaid="dsRegistoTempos"targetNamespace="http://tempuri.org/RegistoTempos.xsd"xmlns:mstns="http://tempuri.org/RegistoTempos.xsd"xmlns="http://tempuri.org/RegistoTempos.xsd"xmlns:xs="http://www.w3.org/2001/XMLSchema"xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"attributeFormDefault="qualified"elementFormDefault="qualified">
    <xs:annotation>
        <xs:appinfosource="urn:schemas-microsoft-com:xml-msdatasource">
          <DataSourceDefaultConnectionIndex="0"FunctionsComponentName="QueriesTableAdapter"Modifier="AutoLayout, AnsiClass, Class, Public"SchemaSerializationMode="IncludeSchema"xmlns="urn:schemas-microsoft-com:xml-msdatasource">
            <Connections>
              <ConnectionAppSettingsObjectName="Web.config"AppSettingsPropertyName="XPTOConnectionString"ConnectionStringObject=""IsAppSettingsProperty="True"Modifier="Assembly"Name="XPTOConnectionString (Web.config)"ParameterPrefix="@"PropertyReference="AppConfig.System.Configuration.ConfigurationManager.0.ConnectionStrings.XPTOConnectionString.ConnectionString"Provider="System.Data.SqlClient">
              </Connection>
            </Connections>
            <Tables>
              <TableAdapterBaseClass="System.ComponentModel.Component"DataAccessorModifier="AutoLayout, AnsiClass, Class, Public"DataAccessorName="QRegistoTemposTableAdapter"Name="QRegistoTempos">
                <MainSource>
                  <DbSourceConnectionRef="XPTOConnectionString (Web.config)"DbObjectType="Unknown"FillMethodModifier="Public"FillMethodName="Fill"GenerateMethods="Both"GenerateShortCommands="False"GetMethodModifier="Public"GetMethodName="GetData"QueryType="Rowset"ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"UseOptimisticConcurrency="False">
                    <SelectCommand>
                      <DbCommandCommandType="Text"ModifiedByUser="True">
    <CommandText>select data,PJ.Projecto, U.Nome, Tempo_Viagem Viagem, Tempo_Trab Trab,Km, Observacoes 
    from PROJ_DETALHE_teste P(nolock), users U(nolock), PROJECTO PJ(nolock)
    where P.ID_Funcionario=U.Funcionario and
    P.ID_Projecto = PJ.ID_Projecto</CommandText>
                        <Parameters>
                          <ParameterAllowDbNull="True"AutogeneratedName=""DataSourceName=""DbType="Int32"Direction="ReturnValue"ParameterName="@RETURN_VALUE"Precision="10"ProviderType="Int"Scale="0"Size="4"SourceColumnNullMapping="False"SourceVersion="Current">
                          </Parameter>
                          <ParameterAllowDbNull="True"AutogeneratedName=""DataSourceName=""DbType="Int32"Direction="Input"ParameterName="@startRowIndex"Precision="10"ProviderType="Int"Scale="0"Size="4"SourceColumnNullMapping="False"SourceVersion="Current">
                          </Parameter>
                          <ParameterAllowDbNull="True"AutogeneratedName=""DataSourceName=""DbType="Int32"Direction="Input"ParameterName="@maximumRows"Precision="10"ProviderType="Int"Scale="0"Size="4"SourceColumnNullMapping="False"SourceVersion="Current">
                          </Parameter>
                          <ParameterAllowDbNull="True"AutogeneratedName=""DataSourceName=""DbType="Int32"Direction="InputOutput"ParameterName="@rowsCount"Precision="10"ProviderType="Int"Scale="0"Size="4"SourceColumnNullMapping="False"SourceVersion="Current">
                          </Parameter>
                        </Parameters>
                      </DbCommand>
                    </SelectCommand>
                  </DbSource>
                </MainSource>
                <Mappings>
                  <MappingSourceColumn="data"DataSetColumn="data" />
                  <MappingSourceColumn="Projecto"DataSetColumn="Projecto" />
                  <MappingSourceColumn="Nome"DataSetColumn="Nome" />
                  <MappingSourceColumn="Viagem"DataSetColumn="Viagem" />
                  <MappingSourceColumn="Trab"DataSetColumn="Trab" />
                  <MappingSourceColumn="Km"DataSetColumn="Km" />
                  <MappingSourceColumn="Observacoes"DataSetColumn="Observacoes" />
                </Mappings>
                <Sources>
                </Sources>
              </TableAdapter>
            </Tables>
            <Sources>
            </Sources>
          </DataSource>
        </xs:appinfo>
      </xs:annotation>
      <xs:elementname="dsRegistoTempos"msdata:IsDataSet="true"msdata:UseCurrentLocale="true">
        <xs:complexType>
          <xs:choiceminOccurs="0"maxOccurs="unbounded">
            <xs:elementname="QRegistoTempos">
              <xs:complexType>
                <xs:sequence>
                  <xs:elementname="data"type="xs:dateTime"minOccurs="0" />
                  <xs:elementname="Projecto"minOccurs="0">
                    <xs:simpleType>
                      <xs:restrictionbase="xs:string">
                        <xs:maxLengthvalue="100" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:elementname="Nome"minOccurs="0">
                    <xs:simpleType>
                      <xs:restrictionbase="xs:string">
                        <xs:maxLengthvalue="50" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:elementname="Viagem"type="xs:int"minOccurs="0" />
                  <xs:elementname="Trab"type="xs:int"minOccurs="0" />
                  <xs:elementname="Km"type="xs:short"minOccurs="0" />
                  <xs:elementname="Observacoes"minOccurs="0">
                    <xs:simpleType>
                      <xs:restrictionbase="xs:string">
                        <xs:maxLengthvalue="255" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:choice>
    </xs:complexType>
      </xs:element>
    </xs:schema>
     
    Obrigado pela ajuda :)
     
    Última edição pelo moderador: 2 de Agosto de 2007
  4. SoundSurfer

    SoundSurfer Power Member

    Se comentar aquela linha que eu disse em cima não funcionou, experimenta desligar o viewstate da GridView: " EnableViewState=false "
     
  5. Tambem não funcionou :(.


    O mais estranho é que se clicar 1ªpag e seguinte aparece os registo da 1ª pag(1-10), se clicar na ultima pagina aparece todos os registos (1-maxregistos)
     
    Última edição: 2 de Agosto de 2007
  6. SoundSurfer

    SoundSurfer Power Member

    Não podes usar o SqlDataSource?

    É mais fácil e funciona de certeza.
     
  7. Por acaso não tens nenhum exemplo SqlDataSource, só comecei programar em asp.net ontem e ainda não tenho grande conhecimentos.


    Obrigado pela ajuda ;)
     
  8. Valeu a ajuda, realmente é mais facil, tinha pegado no primeiro exemplo que encontrei, mas nem sempre é boa politica :)


    Se puderes uma ajudinha noutra duvida, tenho formview em que um dos campos é uma data que posso usar em asp .net para introduzir dados formatados .
    Em asp eu fazia javascrip, tinha tipo um link em que abria um calendario. Em .Net deve haver algo mais directo
     

Partilhar esta Página