2017-09-21 7 views
0

Actuellement, mon programme ne fait pas le défilement automatique en arrivant à la fin de la page, mais il pagination lorsqu'un événement OnClick arrive, j'ai deux ou trois répéteurs imbriqués dans ASP, comme pour C# cette comment je fais la mise en page avec des événements OnClick dans mon jeu de données:pagination Automatiser avec défilement infini

public void relacion_post_comments() 
{ 
    try 
    { 
     double cuenta; 

     SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConexionBD"].ConnectionString); 

     SqlDataAdapter cmd1 = new SqlDataAdapter("select * from vw_Muro_Posts WHERE POST_ESTATUS != '0' ORDER BY cast([POST_FECHA] as datetime) DESC", cnn); 

     DataSet ds = new DataSet(); 
     cmd1.Fill(ds, "vw_Muro_Posts"); 

     cuenta = ds.Tables[0].Rows.Count; 


     PagedDataSource pagedData = new PagedDataSource(); 
     pagedData.DataSource = ds.Tables[0].DefaultView; 
     pagedData.AllowPaging = true; 
     pagedData.PageSize = 10; 
     pagedData.CurrentPageIndex = PgNum; 

     double nuevacuenta = Math.Round(cuenta/pagedData.PageSize); 

     if (PgNum < 1) 
      lnkAtras.Visible = false; 

     else if (PgNum > 0) 
      lnkAtras.Visible = true; 

     if (PgNum == nuevacuenta) 
      lnkAdelante.Visible = false; 

     else if (PgNum < nuevacuenta) 
      lnkAdelante.Visible = true; 

     SqlDataAdapter cmd2 = new SqlDataAdapter("SELECT * FROM vw_Muro_Comments WHERE COMM_ESTATUS != '0' ORDER BY cast([COMM_FECHA] as datetime) DESC", cnn); 

     cmd2.Fill(ds, "vw_Muro_Comments"); 

     //Aqui se hace el join de los dos repeaters 
     ds.Relations.Add("myrelation", 
     ds.Tables["vw_Muro_Posts"].Columns["POST_ID"], 
     ds.Tables["vw_Muro_Comments"].Columns["POST_ID"]); 

     var c = ds.Tables.Count; 

     Repeater_UsrPosts.DataSource = pagedData; 
     Page.DataBind(); 
     cnn.Close(); 
    } 


    catch (Exception ex) 
    { 
     clsLog.ReportarError(); 
    } 
} 


public int PgNum 
{ 
    get 
    { 
     if (ViewState["PgNum"] != null) 
      return Convert.ToInt32(ViewState["PgNum"]); 
     else 
      return 0; 
    } 
    set 
    { 
     ViewState["PgNum"] = value; 
    } 

} 

protected void lnkAdelante_Click(object sender, EventArgs e) 
{ 
    PgNum += 1; 
} 

    protected void lnkAtras_Click(object sender, EventArgs e) 
{ 
    PgNum -= 1; 
} 

la question est, comment puis-je remplacer les événements OnClick avec quelque chose lié au défilement de la page ou la taille de la résolution, ou quoi que ce soit lié à le comportement de vue en C# du client, de sorte que l'utilisateur ne doit pas faire un clic, juste atteindre la fin de la page pour charger la page suivante de l'ensemble de données?

****************************** MISE À JOUR 05/10/17 ********** **********************

J'ai trouvé une solution partielle sur cette page: https://www.aspsnippets.com/Articles/Implement-Infinite-Scroll-Endless-Scroll-in-ASPNet-using-jQuery-AJAX.aspx

Après toutes les étapes là, j'ai obtenu un répéteur -single- infini scrollable. Bien que je suis toujours à trouver comment travailler avec le répéteur imbriqué.

Jusqu'à présent, j'ai essayé ce qui suit, sans succès pour afficher les données de répéteur imbriqué:

[WebMethod] 
public static string GetCustomers(int pageIndex) 
{ 
    return GetCustomersData(pageIndex).GetXml(); 
} 


public static DataSet GetCustomersData(int pageIndex) 
{ 
    string query = "[sp_pro_MuroPosts_PageWise]"; 
    SqlCommand cmd = new SqlCommand(query); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.AddWithValue("@PageIndex", pageIndex); 
    cmd.Parameters.AddWithValue("@PageSize", 10); 
    cmd.Parameters.Add("@PageCount", SqlDbType.Int, 4).Direction = ParameterDirection.Output; 
    return GetData(cmd); 
} 

private static DataSet GetData(SqlCommand cmd) 
{ 


    cmd.Connection = clsBaseDatos.sqlConexion; 
    using (cmd.Connection) 
    { 
     using (DataSet ds = new DataSet()) 
     { 
      SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConexionBD"].ConnectionString); 

      SqlDataAdapter sda = new SqlDataAdapter(); 
      cmd.Connection = cnn; 
      sda.SelectCommand = cmd; 
      sda.Fill(ds, "vw_Muro_Posts"); 

      SqlDataAdapter cmd2 = new SqlDataAdapter("SELECT * FROM vw_Muro_Comments WHERE COMM_ESTATUS != '0' ORDER BY cast([COMM_FECHA] as datetime) DESC", cnn); 

      cmd2.Fill(ds, "vw_Muro_Comments"); 

      //Aqui se hace el join de los dos repeaters 
      ds.Relations.Add("myrelation", 
      ds.Tables["vw_Muro_Posts"].Columns["POST_ID"], 
      ds.Tables["vw_Muro_Comments"].Columns["POST_ID"], false); 


      DataTable dt = new DataTable("PageCount"); 
      dt.Columns.Add("PageCount"); 
      dt.Rows.Add(); 
      dt.Rows[0][0] = cmd.Parameters["@PageCount"].Value; 
      ds.Tables.Add(dt); 

      return ds; 
     } 
    } 
} 
+0

utiliser la minuterie pour rafraîchissement automatique du répéteur. – AsifAli72090

Répondre