使用RedControls控件RadAjaxPanel、AjaxLoadingPanel实现GridView无刷新翻页和排序

一、本文中涉及到的控件
1、标准控件:GridView
2、RadControls控件:RadAjaxPanel和AjaxLoadingPanel

二、页面布局
     建立ASP.NET应用程序或网站,在aspx页面分别防置一个RadAjaxPanel、AjaxLoadingPanel和GridView控件(将GridView嵌套在RadAjaxPanel控件内部)。

     然后将RadAjaxPanel的LoadingPanelID属性设置为AjaxLoadingPanel控件的ID值便OK。

     下面只需要做好后台的程序工作,一个使用RadControls控件的Ajax功能就完成了。

三、编写程序构造数据及实现排序和分页功能
     1、创建数据

 1 private ICollection CreateDataSource()
 2 {
 3     DataTable dt = new DataTable();
 4     DataRow dr;
 5     Random Rand_Num = new Random();
 6 
 7     dt.Columns.Add(new DataColumn("IntegerValue"typeof(Int32)));
 8     dt.Columns.Add(new DataColumn("StringValue"typeof(string)));
 9     dt.Columns.Add(new DataColumn("CurrencyValue"typeof(double)));
10 
11     for (int i = 0; i < 50; i++)
12     {
13         dr = dt.NewRow();
14 
15         dr[0= i;
16         dr[1= "Item " + i.ToString();
17         dr[2= 1.23 * Rand_Num.Next(115);
18 
19         dt.Rows.Add(dr);
20     }
21 
22     DataView dv = new DataView(dt);
23     if (SortExpression != string.Empty && SortExpression != null)
24     {
25         dv.Sort = SortExpression + SortDirection;
26         SwapSortDirection();
27     }
28 
29     return dv;
30 }

     2、绑定数据

 1 string SortExpression;
 2 
 3 protected void Page_Load(object sender, EventArgs e)
 4 {
 5     if (!IsPostBack)
 6     {
 7         if (SortExpression == "" || SortExpression == null)
 8         {
 9             SortExpression = "IntegerValue";
10         }
11         GridView1.DataSource = CreateDataSource();
12         GridView1.DataBind();
13     }
14 }

     3、编写排序方式属性

 1 private string SortDirection
 2 {
 3     get
 4     {
 5         if (ViewState["SortDirection"!= null)
 6         {
 7             return (string)ViewState["SortDirection"];
 8         }
 9         else
10         {
11             return string.Empty;
12         }
13     }
14     set
15     {
16         ViewState["SortDirection"= value;
17     }
18 }
19 
20 private void SwapSortDirection()
21 {
22     if (SortDirection == string.Empty || SortDirection == " ASC")
23     {
24         SortDirection = " DESC";
25     }
26     else
27     {
28         SortDirection = " ASC";
29     }
30 }

     4、编写排序功能代码

1 protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
2 {
3     Thread.Sleep(2000);
4     GridView gv = sender as GridView;
5     SortExpression = e.SortExpression;
6     gv.DataSource = CreateDataSource();
7     gv.DataBind();
8 }

     5、编写分页功能代码

1 protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
2     {
3         Thread.Sleep(2000);
4         this.GridView1.PageIndex = e.NewPageIndex;
5         GridView1.DataSource = CreateDataSource();
6         GridView1.DataBind();
7     }

 

四、类似控件

     RadControls系列控件的RadAjaxPanel和AjaxLoadingPanel主要是用来实现局部刷新及Loading状态,提高用户体验的目的。除此之外我们也可以使用别的技术和控件来实现,ASP.NET AJAX所提供的UpdatePanel和UpdateProgress便是。

posted on 2008-09-15 20:17  Bēniaǒ  阅读(2300)  评论(0编辑  收藏  举报