2017-09-21 7 views
0

현재 페이지의 끝에 도달하면 자동 스크롤이 수행되지 않지만 OnClick 이벤트가 발생하면 페이지 매김을 수행하여 ASP에 중첩 된 반복기가 두 개있는 것처럼 C# 내 데이터 세트를 통해 온 클릭 이벤트와 페이지 매김을하는 방법입니다무한 스크롤로 페이지 매김 자동화

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; 
} 

질문, 난 관련 페이지의 스크롤, 또는 해상도 크기, 또는 아무것도에 관련된 무언가와의 OnClick 이벤트를 교체하는 방법 C#에서 클라이언트의보기 동작, 사용자가 클릭 할 필요가 없도록 페이지의 끝에 도달하여 데이터 세트의 다음 페이지를로드합니까?

**************************** 업데이트 05/10/17 ********** https://www.aspsnippets.com/Articles/Implement-Infinite-Scroll-Endless-Scroll-in-ASPNet-using-jQuery-AJAX.aspx

내가 획득 한이 모든 단계를 다음과 같습니다 **********************

을 나는이 페이지에 부분적인 해결책을 발견 무한 스크롤 가능한 단일 중계기 중첩 된 중계기로 작업하는 방법을 아직 파악하고 있지만 이상이 문제 (무한 스크롤와 중첩 된 리피터)를 해결하기 위해 친절을했다 aspforums.net에서

[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

사용 타이머가 중계기를 새로 고칩니다. – AsifAli72090

답변