对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的分页一样一样一样的啊]
实现:
效果图:
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=" <font color=blue>|</font>  ";
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();
}
}
}
{
/// <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=" <font color=blue>|</font>  ";
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();
}
}
}
效果图:
'突出显示当前页
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