asp.net 带有gridview的分页无刷新,急求,使用ajax

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net 带有gridview的分页无刷新,急求,使用ajax相关的知识,希望对你有一定的参考价值。

参考技术A //********************************************************
//AspNetPager控件ajax分页
//********************************************************

//绑定页码事件
function InitPage()

//处理分页控件
$("#AspNetPager1").children("a").each(function()
if ($(this).attr("href") != "")
//获取分页按钮的超链接
var link = $(this).attr("href");
$(this).click(function()
pages(link);
return false;
);


);


//重置页面内容
function pages(link)
$.ajax(
type: "post",
url: link,
async: false,
data: r: Math.random() ,
global: false,
success: function(msg)
$("#list").html($(msg).find("#list").html());

);
InitPage();
参考技术B 使用asp.net自带的ajax控件,
实现在页面添加scriptmanager控件,然后将需要局部刷新的gridview控件放在UpdatePanel控件的
scriptmanager控件
<asp:UpdatePanel id='dd' runat='server'>
<contentTemplate>
放置gridview控件。
</contentTemplate>
</asp:UpdatePanel>追问

不要这种的!!想使用ajax代码

追答

你使用asp.net 自带控件来完成,有要使用ajax代码?
你如果要使用ajax,那就是通过js和html来布局,如果使用gridview的后台控件的话,就使用后台控制的ajax,你使用后台控件,又要使用js的ajax,这样会增大程序复杂度的。
你用ajax绑定gridview的数据,还不如直接用ajax获取数据,怎用js控制显示一个table,将数据显示出来。

追问

嗯,拼table

追答

那你还用什么gridview啊。拼table的话,直接通过前台传入要跳转到的页面的页码为参数,获取到返回数据就可以了。

追问

当时用的GRIDVIEW,给我你QQ

参考技术C LZ,1楼的就是Ajax了...至于gridview的分页你可以设置gridview的属性就行,不过建议利用数据库分页 参考技术D 直接写sql分页就行了啊

如何在 ASP.NET 中使用带有 Repeater 控件的分页?

【中文标题】如何在 ASP.NET 中使用带有 Repeater 控件的分页?【英文标题】:How to use paging with Repeater control in ASP.NET? 【发布时间】:2014-05-19 05:43:24 【问题描述】:
<asp:Repeater ID="RepCourse" runat="server">

  <ItemTemplate>

    <div style="width:400px"></div>

    <div class="course" style="float: left; margin-left: 100px; margin-top: 100px">

      <div class="image">
        <asp:Image ID="imgteacher" runat="server" Height="150" Width="248" ImageUrl='<%# "ShowImage.ashx?id="+ DataBinder.Eval(Container.DataItem, "CourseID") %>'/>
      </div>

      <div style="margin-left: 3px; width: 250px">
        <div class="name">
          <a href="#"><asp:Label runat="server" ID="lblname" Text='<%#Eval("CourseName") %>'></asp:Label></a>
        </div>
        <div style="height: 13px"></div>
        <div id="teacher">
          <a href="#"><%#Eval("UserName") %> </a>
        </div>
      </div>

      <div style="height: 4px"></div>

      <div class="date">
        <div id="datebegin">
          <asp:Label ID="lbldatebegin" runat="server" Text='<%#Eval("BeginDate") %>'></asp:Label>
        </div>
        <div id="dateend">
          <asp:Label ID="lbldateend" runat="server" Text='<%#Eval("ClosingDate") %>'></asp:Label>
        </div>
      </div>

    </div>

  </ItemTemplate>

</asp:Repeater>

在我的项目中 Repeater Control 工作正常。现在我需要分页来替换这些数据。但我没有这方面的任何信息。可能有人给我关于这个问题的建议。

如下图所示。

【问题讨论】:

也许这会对你有所帮助:aspsnippets.com/Articles/… 【参考方案1】:

Repeater 控件没有内置分页,但根据this 文章,您可以通过为页面创建另一个Repeater 控件并使用PagedDataSource 作为其源来实现Repeater 控件中的分页。

首先,将其添加到您的标记中:

<div style="overflow: hidden;">

<asp:Repeater ID="rptPaging" runat="server" OnItemCommand="rptPaging_ItemCommand">
 <ItemTemplate>
  <asp:LinkButton ID="btnPage"
   style="padding:8px;margin:2px;background:#ffa100;border:solid 1px #666;font:8pt tahoma;"
   CommandName="Page" CommandArgument="<%# Container.DataItem %>"
   runat="server" ForeColor="White" Font-Bold="True">
    <%# Container.DataItem %>
  </asp:LinkButton>
 </ItemTemplate>
</asp:Repeater>

</div>

接下来,在你的代码后面添加以下属性:

//This property will contain the current page number 
public int PageNumber

    get
    
        if (ViewState["PageNumber"] != null)
        
            return Convert.ToInt32(ViewState["PageNumber"]);
        
        else
        
            return 0;
        
    
    set  ViewState["PageNumber"] = value; 

最后添加以下方法:

protected void Page_Load(object sender, EventArgs e)

    BindRepeater();


private void BindRepeater()

    //Do your database connection stuff and get your data
    SqlConnection cn = new SqlConnection(yourConnectionString);
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = cn;
    SqlDataAdapter ad = new SqlDataAdapter(cmd);
    cmd.CommandText = "Select * from YourTable";

    //save the result in data table
    DataTable dt = new DataTable();
    ad.SelectCommand = cmd;
    ad.Fill(dt);

    //Create the PagedDataSource that will be used in paging
    PagedDataSource pgitems = new PagedDataSource();
    pgitems.DataSource = dt.DefaultView;
    pgitems.AllowPaging = true;

    //Control page size from here 
    pgitems.PageSize = 4;
    pgitems.CurrentPageIndex = PageNumber;
    if (pgitems.PageCount > 1)
    
        rptPaging.Visible = true;
        ArrayList pages = new ArrayList();
        for (int i = 0; i <= pgitems.PageCount - 1; i++)
        
            pages.Add((i + 1).ToString());
        
        rptPaging.DataSource = pages;
        rptPaging.DataBind();
    
    else
    
        rptPaging.Visible = false;
    

    //Finally, set the datasource of the repeater
    RepCourse.DataSource = pgitems;
    RepCourse.DataBind();


//This method will fire when clicking on the page no link from the pager repeater
protected void rptPaging_ItemCommand(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e)

    PageNumber = Convert.ToInt32(e.CommandArgument) - 1;
    BindRepeater();

请试一试,如果您遇到任何问题,请告诉我。

编辑:替代解决方案

另一个优秀的解决方案可以找到Here,这个解决方案包括页面的导航按钮。您需要从该链接下载文件以查看功能分页,只需将 DataList 控件替换为您的 Repeater 控件即可。

希望这会有所帮助。

【讨论】:

以上是关于asp.net 带有gridview的分页无刷新,急求,使用ajax的主要内容,如果未能解决你的问题,请参考以下文章

使用vb在asp.net中没有gridview的分页

asp.net中GridView怎样进行分页,编辑,删除操作

如何在 ASP.NET 中使用带有 Repeater 控件的分页?

带有 ASP.NET MVC 和 AJAX 的分页表 [关闭]

jquery 分页无刷新的简单代码求教,<div class="holder"></div>

ASP.NET MVC3 - 仅分页(不显示 WebGrid)