您的位置:首页 > 其它

repeater无刷新分页显示

2011-11-21 16:43 246 查看
protected void Button1_Click(object sender, EventArgs e)
{
//button1  根据订单编号和订单时间搜索
BindList(1, true);
string callbackReference = ClientScript.GetCallbackEventReference(this, "arg", "ReceiveCallback", "content", false);
string callbackScript = string.Format("function CallServer(arg,content){{ {0} }}", callbackReference);
ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", callbackScript, true);
}

static int PAGESIZE = 10;你想每页显示几条数据
private int currentPageIndex;当前的页码
protected void BindList(int pageIndex, bool needRender)
{
string ddh = TextBox1.Text.Replace(" ", "");
string startDt = TxtStartTime.Value;
string endDt = TxtEndTime.Value;//这三条是查询条件
DataTable dt = new DataTable();
dt = dingdansussServices.GetDDanByDdhOrDt(ddh, startDt, endDt);//从数据库取得数据源
if (dt == null) return;
int pages = (dt.Rows.Count % PAGESIZE == 0) ? dt.Rows.Count / PAGESIZE : (dt.Rows.Count / PAGESIZE) + 1;
if (needRender)//用不用分页
{
RenderPager(pages);
}        PagedDataSource pds = new PagedDataSource();
pds.DataSource = dt.DefaultView;
pds.AllowPaging = true;
pds.PageSize = 10;
if (pageIndex == 0)
{
pageIndex = 1;
}
//设置分页对象的当前索引
pds.CurrentPageIndex = pageIndex - 1;
    //把数据源绑到repeater上去
Repeater1.DataSource = pds;
Repeater1.DataBind();
}

protected void RenderPager(int pages)
{
StringBuilder sb = new StringBuilder();
int pageIndex = 1;
do
{
sb.AppendFormat("<a href='javascript:turnPage({0});'>{0}</a>  ", pageIndex);
} while (pageIndex++ < pages);
lblCurPage.Text = sb.ToString();
}

public void RaiseCallbackEvent(string eventArgument)
{
currentPageIndex = Convert.ToInt32(eventArgument);
BindList(currentPageIndex, false);
}

public string GetCallbackResult()
{
//返回再次绑定后的Repeater的表现内容
return RenderControl(Repeater1);
}

private string RenderControl(Control control)
{
StringWriter writer1 = new StringWriter(CultureInfo.InvariantCulture);
HtmlTextWriter writer2 = new HtmlTextWriter(writer1);

control.RenderControl(writer2);
writer2.Flush();
writer2.Close();
return writer1.ToString();
}

protected void List_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Label NickName = e.Item.FindControl("NickName") as Label;
Label QNumber = e.Item.FindControl("QNumber") as Label;

DataRow row = e.Item.DataItem as DataRow;
NickName.Text = row["NickName"].ToString();
QNumber.Text = row["QNumber"].ToString();
}
}


页面:

<head>
<script language="javascript" type="text/javascript">
function turnPage(pageIndex){
CallServer(pageIndex,'content');<%--这个content是下边那个div的id--%>
}

function ReceiveCallback(arg,context){
var container = document.getElementById(context);
//alert(arg + "  " + context);
container.innerHTML = arg;
}
</script>
</head>

<body>

<div id="content">
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate><table border="1"><tr><td>订单编号</td><td>订购时间</td><td>订单金额</td><td>订单状态</td><td>查看</td></tr></HeaderTemplate>
<ItemTemplate ><tr>
<td><%#DataBinder.Eval(Container.DataItem, "订单编号")%></td>
<td><%#DataBinder.Eval(Container.DataItem, "订购时间")%></td>
<td><%#DataBinder.Eval(Container.DataItem, "订单金额")%></td>
<td><%#DataBinder.Eval(Container.DataItem, "订单状态")%></td>
<td><a href="order_detail.aspx?ddh='<%#DataBinder.Eval(Container.DataItem, "订单编号")%>'">查看</a></td>
</tr></ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
</div>
</body>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: