您的位置:首页 > 编程语言 > ASP

【转】ASP.NET 数据分页第三篇 - 结合 Custom Control 处理 GridView 的 UI 呈现

2012-11-02 15:38 429 查看
延续本系列前两篇帖子「ASP.NET 数据分页第一篇 - 探讨分页原理及 SQL Server 2005 的 ROW_NUMBER 函数」、「ASP.NET 数据分页第二篇 - 范例下载」,本系列的第三篇帖子,同样是处理 GridView 的「分页」的问题,但前两篇是处理数据库的数据撷取问题,本篇是处理 GridView 前端 UI 呈现的问题。

本帖的重点,是版工我自己写了一个 Custom Control 的 GridView,名为 WizardGridView,其直接继承自微软 ASP.NET 2.0 原生的 GridView 控件,执行画面如下图 1 所示,在换页 (分页) 功能、相关信息显示上,强化了微软原生 GridView 不足之处。

// 设定「光棒、单数列、双数列」的颜色
protected override void OnRowDataBound(System.Web.UI.WebControls.GridViewRowEventArgs e)
{
// 背景颜色暂时写死在下面这三行,但如此一来,即无法由程序员自订颜色;
// 若要开放让程序员自订颜色,必须将下列三行注解掉,亦即改由每支程序的前端 .aspx 透过 GridView 的「属性」窗口,去设定颜色
Wizard_OddRowBackColor = System.Drawing.Color.FromName("#FFFFFF"); // 白色
Wizard_EvenRowBackColor = System.Drawing.Color.FromName("#F7F6F3"); // 浅蓝色
Wizard_MouseOverBackColor = System.Drawing.Color.FromName("#FFFF77"); // 米黄色

// 设定「页码行」,是要显示在 GridView 上方还下方,还是上、下方都显示;另再设定「页码行」要显示在左、中、还是右侧。
// 若在此写死,则程序员即无法由前端自订;若要开放让程序员自订位置,必须将下面这两行注解掉。
//PagerSettings.Position = PagerPosition.Top; //.TopAndBottom;
//PagerStyle.HorizontalAlign = HorizontalAlign.Right;

<PagerSettings Position="Top" /><PagerStyle HorizontalAlign="right" />

此外,当一个 Class 直接继承自 ASP.NET 2.0 的 GridView Class 时,这个自订 Class (亦即 Custom Control GridView 控件) 在 .aspx 的 Columns Tag 中的 IntelliSense,都会无故失效,如下图 4 所示,造成程序员开发上的不便。版工猜测,这可能是微软 GridView 本身的 Bug。

本帖下载示例的解决之道,是再加上 WizardBoundField、WizardTempateField 两个 Class,直接继承自微软原生的 BoundField、TempateField 这两个 Class,但却能让自订的WizardGridView 控件里,Columns Tag 中的 IntelliSense 功能都恢复正常运作,如下图 4 所示。网友们亦可参考下载示例中,ObjectDataSource、SqlDataSource 网站里,SqlServer2005.aspx、Default.aspx 的写法。



图 4 继承自 GridView 后,Columns Tag 里的 IntelliSense,默认会无故失效

本帖的 WizardGridView 控件,网友们若有任何建议,或发现有 Bug,欢迎留言反应。但版工因工作关系,时间有限,各位的意见或反应的 Bug 可能无法立刻修正,敬请见谅。

--------------转自 WizardWu探讨分页原理及 SQL Server 2005 的 ROW_NUMBER 函数(三)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐