对DataGrid的分页栏的理解

   昨天在Csdn回答一位朋友的问题时,恰巧碰到这样的问题,我有些疑惑,所以晚上回家就试了一下,后来才发现是自已错啦.在这里我想纠正自已的错误.

DataGrid的分页栏控件的组成及各自的功能

1.DataGrid的分页栏由三个控件组成.分别为:

1.System.Web.UI.WebControls.Label

2.System.Web.UI.LiteralControl

3.System.Web.UI.WebControls.DataGridLinkButton

其中每个控件有每个控件的作用.
##Label负责显示当前页,也就是选择页.
##LiteralControl负责显示一个空格,用来间隔它们之间的距离
##DataGridLinkButton显示连接,用来连接到其它页,如下一页.
这样就可以很轻松地回答昨于那位朋友的问题啦

原题:
[小弟想要做DataGrid,什么效果呢,要分页
1 2 3 4,当我选中第2页时,2的颜色要跟1 3 4不一样。
就像CSDN的分页一样一样一样的啊]

实现:

namespace Text_WebApp
{
    
/// <summary>
    
/// ChangPageStyle 的摘要说明。
    
/// </summary>

    public class ChangPageStyle : System.Web.UI.Page
    
{
        
protected System.Web.UI.WebControls.DataGrid DataGrid1;
    
        
private void Page_Load(object sender, System.EventArgs e)
        
{
            
// 在此处放置用户代码以初始化页面
            if(!Page.IsPostBack)
            
{
                DataGrid1.DataSource
=CreateDataBase();
                DataGrid1.DataBind();
            }

        }

        
public DataTable CreateDataBase() 
        
{
            DataTable Dt
=new DataTable();
            Dt.Columns.Add(
"Id");
            Dt.Columns.Add(
"Name");
            Dt.Columns.Add(
"Zip");

            DataRow Dr;
            
for(int i=0;i<20;i++)
            
{
                Dr
=Dt.NewRow();
                Dr[
"Id"]=i.ToString();
                Dr[
"Name"]="姓名"+i.ToString();
                Dr[
"Zip"]="地址"+i.ToString();
                Dt.Rows.Add(Dr);
            }

            
return Dt;
        }


        
Web 窗体设计器生成的代码

        
private void DataGrid1_ItemCreated(object sender, DataGridItemEventArgs e)
        
{
            
if(e.Item.ItemType==ListItemType.Pager)
            
{
                
foreach(Control Ct in e.Item.Cells[0].Controls)
                
{
                    switch(Ct.GetType().ToString())
                    
{
                        
case "System.Web.UI.WebControls.Label"://当前页
                            Label Lb=(Label)Ct;
                            Lb.ForeColor
=Color.Red;
                            Lb.Font.Bold
=true;
                            Lb.Text
="当前页["+Lb.Text+"]";
                            
break;
                        
case "System.Web.UI.LiteralControl"://页标识间间隔
                            LiteralControl Lt=(LiteralControl)Ct;
                            Lt.Text
="&nbsp;&nbsp;<font color=blue>|</font>&nbsp;&nbsp";
                            
break;
                        
case "System.Web.UI.WebControls.DataGridLinkButton"://连接到其它页的LinkButton
                            LinkButton LB=(LinkButton)Ct;
                            LB.Text
="第["+LB.Text+"]页";
                            LB.ForeColor
=Color.Red;
                            
break;
                    }

                }

            }

        }


        
private void DataGrid1_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
        
{
            DataGrid1.CurrentPageIndex
=e.NewPageIndex;
            DataGrid1.DataSource
=CreateDataBase();
            DataGrid1.DataBind();
        }

    }

}


效果图:



posted on 2004-07-19 10:45 笨笨 阅读(115) 评论(2)  编辑 收藏

评论

# re: 对DataGrid的分页栏的理解

我常用这样的方法:
        '突出显示当前页
        Dim Item As DataGridItem
        Dim ctrl As Control
        For Each Item In dg.Controls(0).Controls
            If Item.ItemType = ListItemType.Pager Then
                For Each ctrl In Item.Cells(0).Controls
                    If ctrl.GetType.ToString = "System.Web.UI.WebControls.Label" Then
                        If CType(ctrl, Label).Text = (dg.CurrentPageIndex + 1).ToString Then
                            CType(ctrl, Label).ForeColor = Color.Red
                            Exit For
                        End If
                    End If
                Next
            End If
        Next
# re: 对DataGrid的分页栏的理解 我常用这样的方法:
        '突出显示当前页
        Dim Item As DataGridItem
        Dim ctrl As Control
        For Each Item In dg.Controls(0).Controls
            If Item.ItemType = ListItemType.Pager Then
                For Each ctrl In Item.Cells(0).Controls
                    If ctrl.GetType.ToString = "System.Web.UI.WebControls.Label" Then
                        If CType(ctrl, Label).Text = (dg.CurrentPageIndex + 1).ToString Then
                            CType(ctrl, Label).ForeColor = Color.Red
                            Exit For
                        End If
                    End If
                Next
            End If
        Next
posted @ 2004-11-10 02:38  Benny Ng  阅读(548)  评论(0编辑  收藏  举报