100分,还是扩展GridView的问题,请Jinglecat(晓风残月 等各位帮忙
昨天排序的问题已经解决,今天在照着做个性分页的时候又有点问题
分页功能可以实现,但是上面新加入的导航条,并不是占满整个GridVieew的宽度,而是占满了第一个字段的宽度,我想可能是通过在创建子控件的方式,添加到GridView时某一处的问题
作者的文章地址
http://www.cnblogs.com/jillzhang/archive/2007/06/12/779934.html
下面是该方法的重写代码
protected override int CreateChildControls(System.Collections.IEnumerable dataSource, bool dataBinding)
{
int res = base.CreateChildControls(dataSource, dataBinding);
if (ShowToolBar)
{
try
{
GridViewRow row = new GridViewRow(0, 0, DataControlRowType.Pager, DataControlRowState.Normal);
TableCell c = new TableCell();
c.Width = Unit.Percentage(100);
c.ColumnSpan = this.Columns.Count;
row.Cells.Add(c);
TableCell cell1 = new TableCell();
Table table = new Table();
TableRow r = new TableRow();
table.Rows.Add(r);
table.Width = Unit.Percentage(100);
c.Controls.Add(table);
r.Cells.Add(cell1);
Literal l1 = new Literal();
l1.Text = "页次: ";
cell1.Controls.Add(l1);
cell1.Wrap = false;
cell1.Controls.Add(lblCurrentPage);
l1 = new Literal();
l1.Text = "页/ ";
cell1.Controls.Add(l1);
cell1.Controls.Add(lblPageCount);
l1 = new Literal();
l1.Text = "页,共 ";
cell1.Controls.Add(l1);
cell1.Controls.Add(lblRowsCount);
l1 = new Literal();
l1.Text = "条记录 ";
cell1.HorizontalAlign = HorizontalAlign.Left;
cell1.Controls.Add(l1);
TableCell cell2 = new TableCell();
cell2.HorizontalAlign = HorizontalAlign.Right;
cell2.Wrap = false;
l1 = new Literal();
l1.Text = " [ ";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnFirst);
l1 = new Literal();
l1.Text = "] ";
cell2.Controls.Add(l1);
l1 = new Literal();
l1.Text = " [ ";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnPrev);
l1 = new Literal();
l1.Text = "] ";
cell2.Controls.Add(l1);
l1 = new Literal();
l1.Text = " [ ";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnNext);
l1 = new Literal();
l1.Text = "] ";
cell2.Controls.Add(l1);
l1 = new Literal();
l1.Text = " [ ";
cell2.Controls.Add(l1);
cell2.Controls.Add(btnLast);
l1 = new Literal();
l1.Text = "] ";
cell2.Controls.Add(l1);
r.Cells.Add(cell2);
this.Controls[0].Controls.AddAt(0, row);
}
catch
{
}
}
return res;
}
另外可不可以把这一导航条放在GridView的底部,替换掉原来的分页栏
多谢了!
[解决办法]
up
[解决办法]
是第一个字段的宽度
[解决办法]
mark!
[解决办法]
看了.
帮顶.
[解决办法]
mark
[解决办法]
支持
[解决办法]
1.
另外可不可以把这一导航条放在GridView的底部,替换掉原来的分页栏
========
可以,事实上,分页栏顶部和底部都有,分本是 GridView.TopPagerRow GridView.BottomPagerRow
2.
并不是占满整个GridVieew的宽度,而是占满了第一个字段的宽度
=========
就你此段的代码,考虑其问题本身没有问题,
但是,你得考虑整个控件的事件周期,以确定以下关键代码可以预期的得到 GridView 的列数
c.ColumnSpan = this.Columns.Count; // 请检查此时 Columns.Count 的值
3.
对于 GridView.Columns.Count 存在一个容易忽略的问题,就是无论何时,GridView.Columns.Count 得到的值只包括【显示的通过代码或者声明(aspx中)添加的列数】,不包括 GridView.AutoGenerateColumns = true 时,自动根据数据源生成的目标数据源烈数
> > >
c.ColumnSpan = this.Columns.Count + GetMyDataSourceColumnCount(dataSource);
private int GetMyDataSourceColumnCount(System.Collections.IEnumerable dataSource)
{
if(!this.AutoGenerateColumns) return 0;
// 以下需要对 dataSource 进行类型转换,以获取最终目标类型,进而获取列数
// 具体的会对应几种类型,自己查下文档吧,我忘了,
// 注意区分回发和数据绑定两种情况
// ....
// return ....
}
[解决办法]
mark
------解决方案--------------------
study~~~~~~~
[解决办法]
帮你顶一下吧