首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

100分,还是扩展GridView的有关问题,请Jinglecat(晓风残月 等各位帮忙

2012-01-21 
100分,还是扩展GridView的问题,请Jinglecat(晓风残月 等各位帮忙昨天排序的问题已经解决,今天在照着做个性

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~~~~~~~
[解决办法]
帮你顶一下吧

热点排行