风影ASP.NET基础教学 12 GridView详解

如果你用过GridView控件后,我相信你会很快喜欢使用它。GridView控件是老版本DataGrid的新一代改良者。是基于DataGrid改良而来的,它不但具备了更强大的数据网格显示与统计等功能,而且还可以以更少或者零程序代码来完成简单的数据处理,如选择、排序、分页、编辑与数据统计等。此外,它还可以方便的通过模板来扩展,从而满足你的各种显示需求。在日常Web设计中,GridView控件是使用最为频繁的控件之一。尤其是数据处理方面。

GridView基础

GridView是一个用于显示数据的极为灵活的网络控件。在实际编程中,可以通过多种方式来对GridView控件进行数据绑定,还可以根据程序需要来自定义它的列的类型

数据绑定

  1. 可以和其他数据绑定控件一样通过SqlDataSource来进行绑定到DataSoureId
  2. 可以通过DataSource属性设置数据源并通过DataBind()方法进行绑定

做法请参考之前内容

定义列

和DetailsView定义列的方式很类似,可以通过AutoGenerateColumns属性让它自动显示数据源中的所有内容。通过将其设置为false,然后定义自己的列字段集合,也可以手动控制哪些列字段将显示在GridView控件中。不同的列字段类型决定控件中各列的行为。

<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="Id" HeaderText="编号" />
        <asp:BoundField DataField="Title" HeaderText="标题" />
        <asp:BoundField DataField="Author" HeaderText="作者" />
        <asp:BoundField DataField="PublishDate" HeaderText="时间" />
        <asp:BoundField DataField="CategoryId" HeaderText="类型" /> 
    </Columns> 
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" SelectCommand="Select * from books" ConnectionString="<%$ ConnectionStrings:con %>"></asp:SqlDataSource>

效果:

image

 

另外除了可以为BoundField列设置DataField和HeaderText属性之外,还可以设置其他的属性

 

AccessibleHeaderText 设置某些控件中呈现为AbbreviatedText的属性文本
ApplyFormateInEditMode 设置一个布尔值,指示包含BoundField对象的数据绑定控件处于编辑模式时,DataFormateString指定的格式化字符串是否应用到该字段
ControlStyle 设置DataControlField对象所包含的任何Web服务器控件的样式。
ConvertEmptyStringToNull 设置一个布尔值,指示在数据源中更新数据字段时是否将空字符串自动转换为null
DataField 设置要绑定到BoundField对象的数据字段名称
DataFieldString 设置字符串,该字符串指定字段值的显示格式
FooterStyle 设置脚注的样式
FooterText 设置脚注中显示的文字
HeaderImageUrl 设置标题中显示图片的url
HeaderStyle 设置标题样式
HeaderText 设置标题的文本
HtmlEncode 设置一个布尔值,指示在BoundField对象中显示字段值之前,是否对这些字段进行Html编码
InsertVisible  
ItemStyle 设置当字段显示任何基于文本的样式
NullDisplayText 设置当字段值为空时为字段显示的内容
ReadOnly 设置是否只读
ShowHeader 设置是否显示标题
SortExpression 设置数据源控件用来对数据进行排序
Visible 是否可见

 

除了可以手动配置这些列,还可以通过配置工具来进行配置相关的列属性

image

 

格式化内容

上面提过每个BoundField列字段都有一个DataFormatString属性,可以通过该属性来使用格式化字符串控制数值和日期的显示格式。

 

数值格式化字符串

货币     {0:C}
科学计数法   {0:E}
百分比   {0:P}
固定浮点数   {0:F?} ?保留小数的位数

 

日期格式化字符串

短日期 {0:d}    2012-11-12
长日期与短时间 {0:f}     2010年11月12日 23:10
长日期 {0:D}    2010年11月12日
长日期与长时间 {0:F}    2010年11月12日 23:10:11
ISO标准格式 {0:s}    2010-1-2T21:22:22
月和日 {0:M}   10月20日
一般格式 {0:G}    2010-10-31 23:12:12

 

除此之外还可以通过自定义的形式来设置。

  • 年:yyyy 代表4位数年  yy代表2位数年
  • 月:MM代表2位数月   M代表一位数月
  • 日:dd
  • 小时:HH
  • 分钟:mm
  • 秒:ss

示例:{0:yy-M-d H:m:s}  12-1-3 5:12:3

格式化特定的值

我们可以通过行的特定属性来进行样式的渲染达到高亮或者内容醒目的效果,有这种需求的时候我们需要借助一个事件RowDataBound事件,当绑定数据的时候对每一行进行单独特殊的设置。

 
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow) {
        int type = Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "CategoryId"));
        if (type == 4) {
            e.Row.ForeColor = System.Drawing.Color.Red;
            e.Row.ToolTip = "类型为4";
        }
    }
}

显示效果

image

 

下章我们讲解GridView的基本操作

posted on 2012-08-31 11:41  任生风影  阅读(1860)  评论(6编辑  收藏  举报

导航