1个回答
推荐于2018-02-27
展开全部
如果没有设置任何数据源属性,则GridView控件不会生成任何东西。如果绑定了一个空的数据源并且规定了EmptyDataTemplate模板,则向用户显示的结果有一个较友好的外观:
<asp:gridview runat="server" datasourceid="MySource">
<emptydatatemplate>
<asp:label runat="server">
There's no data to show in this view.
</asp:label>
</emptydatatemplate>
</asp:gridview>
如果该控件所绑定的数据源不空,则忽略EmptyDataTemplate属性。
如果使用一个已声明的列集合,则网格的AutoGenerateColumns属性通常设置为false。然而,这不是一个严格的要求——网格可以声明的列和自动生成的列。在这种情况下,声明的列先显示。还要注意自动生成的列不是添加到Columns集合。因此,使用列自动生成时,Columns集合通常是空的。
1. 对列进行配置
Columns属性是一个DataControlField对象集合。DataControlField对象类似于DataGrid的DataGridColumn对象,但是它有一个更一般的名称,因为这些字段对象可以在其他不必生成列的数据绑定控件中重用。(例如,在DetailsView控件中,相同的类用来生成一行。)
我们既可以以声明的方式定义列,也可以以编程方式声明列。如果以编程的方式声明列,则只要实例化任何必需的数据字段对象,并把它们添加到Columns集合。如下代码把一个数据绑定的列添加到网格中:
BoundField field = new BoundField();
field.DataField = "companyname";
field.HeaderText = "Company Name";
grid.ColumnFields.Add(field);
各列数据按列字段在集合众出现的顺序进行显示。要在.aspx源文件中静态地声明列,则使用<Columns>标签,如下面所示:
<columns>
<asp:boundfield datafield="customerid" headertext="ID" />
<asp:boundfield datafield="companyname" headertext="Company Name" />
</columns>
2. 绑定字段
BoundField类表示在一个数据绑定控件(诸如GridView或DetailsView)中作为纯文本显示的一个字段。为了规定要显示的字段,把DataField属性设置为该字段的名称。通过设置DataFormatString属性,可以应用一个定制的格式化字符串于所显示的值。如果NullDisplayText属性的值为null,则允许我们规定要显示的交替文本。最后,通过把ConvertEmptyStringToNull属性设置为true,强制该类把空字符串看作null值。
BoundField可以通过Visible属性以编程的方式隐藏起来,而ReadOnly属性防止所显示的值在编辑模式被修改。要在头部或页脚部分显示一个标题,请分别设置HeaderText和FooterText属性。我们还可以选择在头部显示一个图像,而不是文本,这时要设置HeaderImageUrl属性。
3. 按钮字段
按钮字段适合于把一个可单击的元素放入一个网格的列中。通常使用一个按钮字段触发针对当前行的一个操作。按钮字段表示我们希望通过一个服务器端事件处理的任何操作。当该按钮被单击时,页面回发并激发一个RowCommand事件。
4. 超链接字段
超链接列把用户指向一个不同的URL,该URL可以有选择地在一个内部框架中显示出来。该链接的文本和URL可以从所绑定的数据源中获得。特别是,URL可以按以下两种方法之一进行设置:通过直接绑定到一个数据源字段,或通过使用一个硬编码的带有定制查询字符串的URL。如果URL存储在数据源的一个字段字段中,则选择直接绑定。在这种情况下,把DataNavigateUrlFields属性设置为该列的名称。然而,在某些情况下,要访问的URL与特定的应用程序有关,并不是存储在数据源中。在这种情况下,可以用一个硬编码的URL和查询字符串中的一个参数数组设置DataNavigateUrlFormatString属性:
<asp:HyperLinkField DataTextField="productname"
HeaderText="Product"
DataNavigateUrlFields="productid"
DataNavigateUrlFormatString="productinfo.aspx?id={0}"
Target="ProductView" />
当用户单击该按钮时,浏览器用productinfo.aspx?id=xxx URL的内容填充规定的框架窗口,其中xxx取自productid字段。该URL可以包含多个参数。要包含多个数据绑定值,只要把DataNavigateUrlFields属性设置为一个逗号隔开的字段名列表。该行为扩展了DataGrid的超链接列的行为,因为它支持多个参数。
超链接的文本也可以进行格式化。DataTextFormatString属性可以包含任何有效的标记,并使用{0}占位符保留数据绑定值的位置。
5. CheckBox字段
我们迄今所考虑的列类型对于经验丰富的ASP.NET 1.x开发人员来讲并不觉得新奇。虽然被重命名了,但是它们的总体行为仍然非常类似于DataGrids的类似列类型的行为。另一方面,CheckBoxField类型是在ASP.NET 2.0中是一个新类型,并且只适用于GridView和其他视图控件。在ASP.NET 1.x中获得一个复选框的最简单的方法是通过模板(一般是针对DataGrids)。
CheckBoxField列是显示一个复选框的一个较简单的绑定列。我们可以只把它绑定到一个包含布尔值的数据字段。有效的布尔值取自一个SQL Server表中的一个Bit类型(和其他数据库中的类似类型)的列,如果该控件绑定到一个定制集合,则取自一个bool类型的属性。特别是,如果把一个CheckBoxField列绑定到一个整数属性,则会得到一个异常,从而隐式地假设0为false,非0为true。
6. 图像字段
ImageField列类型表示一个在数据绑定控件中作为图像显示的字段。该单元包含一个<img>元素,因此底层的字段必须引用一个有效的URL。然而,我们可以任意组合URL。例如,我们可以使用DataImageUrlField执行直接绑定,其中该字段的内容填充<img>标签的Src属性。另外,我们可以使该列的单元指向一个外部页面(或者HTTP处理程序),从任何来源获取该图像的字节,并把它们下传给浏览器。如下代码说明了这种方法:
<Columns>
<asp:ImageField DataImageUrlField="employeeid"
DataImageUrlFormatString="showemployeepicture.aspx?id={0}"
DataAlternateTextField="lastname">
<ControlStyle Width="120px" />
</asp:ImageField>
<asp:TemplateField headertext="Employee">
<ItemStyle Width="220px" />
<ItemTemplate>
<b><%# Eval("titleofcourtesy") + " " +
Eval("lastname") + ", " +
Eval("firstname") %></b>
<%# Eval("title")%>
<hr />
<i><%# Eval("notes")%></i>
</ItemTemplate>
</asp:templatefield>
</Columns>
ImageField列中的单元用下一个URL的输出进行填充:
ShowEmployeePicture.aspx?id=xxx
不用说,xxx是employeeid字段中与DataImageUrlField关联的值。有趣的是,替代文本也可以是数据绑定的。我们对替代文本使用DataAlternateTextField属性。
<asp:gridview runat="server" datasourceid="MySource">
<emptydatatemplate>
<asp:label runat="server">
There's no data to show in this view.
</asp:label>
</emptydatatemplate>
</asp:gridview>
如果该控件所绑定的数据源不空,则忽略EmptyDataTemplate属性。
如果使用一个已声明的列集合,则网格的AutoGenerateColumns属性通常设置为false。然而,这不是一个严格的要求——网格可以声明的列和自动生成的列。在这种情况下,声明的列先显示。还要注意自动生成的列不是添加到Columns集合。因此,使用列自动生成时,Columns集合通常是空的。
1. 对列进行配置
Columns属性是一个DataControlField对象集合。DataControlField对象类似于DataGrid的DataGridColumn对象,但是它有一个更一般的名称,因为这些字段对象可以在其他不必生成列的数据绑定控件中重用。(例如,在DetailsView控件中,相同的类用来生成一行。)
我们既可以以声明的方式定义列,也可以以编程方式声明列。如果以编程的方式声明列,则只要实例化任何必需的数据字段对象,并把它们添加到Columns集合。如下代码把一个数据绑定的列添加到网格中:
BoundField field = new BoundField();
field.DataField = "companyname";
field.HeaderText = "Company Name";
grid.ColumnFields.Add(field);
各列数据按列字段在集合众出现的顺序进行显示。要在.aspx源文件中静态地声明列,则使用<Columns>标签,如下面所示:
<columns>
<asp:boundfield datafield="customerid" headertext="ID" />
<asp:boundfield datafield="companyname" headertext="Company Name" />
</columns>
2. 绑定字段
BoundField类表示在一个数据绑定控件(诸如GridView或DetailsView)中作为纯文本显示的一个字段。为了规定要显示的字段,把DataField属性设置为该字段的名称。通过设置DataFormatString属性,可以应用一个定制的格式化字符串于所显示的值。如果NullDisplayText属性的值为null,则允许我们规定要显示的交替文本。最后,通过把ConvertEmptyStringToNull属性设置为true,强制该类把空字符串看作null值。
BoundField可以通过Visible属性以编程的方式隐藏起来,而ReadOnly属性防止所显示的值在编辑模式被修改。要在头部或页脚部分显示一个标题,请分别设置HeaderText和FooterText属性。我们还可以选择在头部显示一个图像,而不是文本,这时要设置HeaderImageUrl属性。
3. 按钮字段
按钮字段适合于把一个可单击的元素放入一个网格的列中。通常使用一个按钮字段触发针对当前行的一个操作。按钮字段表示我们希望通过一个服务器端事件处理的任何操作。当该按钮被单击时,页面回发并激发一个RowCommand事件。
4. 超链接字段
超链接列把用户指向一个不同的URL,该URL可以有选择地在一个内部框架中显示出来。该链接的文本和URL可以从所绑定的数据源中获得。特别是,URL可以按以下两种方法之一进行设置:通过直接绑定到一个数据源字段,或通过使用一个硬编码的带有定制查询字符串的URL。如果URL存储在数据源的一个字段字段中,则选择直接绑定。在这种情况下,把DataNavigateUrlFields属性设置为该列的名称。然而,在某些情况下,要访问的URL与特定的应用程序有关,并不是存储在数据源中。在这种情况下,可以用一个硬编码的URL和查询字符串中的一个参数数组设置DataNavigateUrlFormatString属性:
<asp:HyperLinkField DataTextField="productname"
HeaderText="Product"
DataNavigateUrlFields="productid"
DataNavigateUrlFormatString="productinfo.aspx?id={0}"
Target="ProductView" />
当用户单击该按钮时,浏览器用productinfo.aspx?id=xxx URL的内容填充规定的框架窗口,其中xxx取自productid字段。该URL可以包含多个参数。要包含多个数据绑定值,只要把DataNavigateUrlFields属性设置为一个逗号隔开的字段名列表。该行为扩展了DataGrid的超链接列的行为,因为它支持多个参数。
超链接的文本也可以进行格式化。DataTextFormatString属性可以包含任何有效的标记,并使用{0}占位符保留数据绑定值的位置。
5. CheckBox字段
我们迄今所考虑的列类型对于经验丰富的ASP.NET 1.x开发人员来讲并不觉得新奇。虽然被重命名了,但是它们的总体行为仍然非常类似于DataGrids的类似列类型的行为。另一方面,CheckBoxField类型是在ASP.NET 2.0中是一个新类型,并且只适用于GridView和其他视图控件。在ASP.NET 1.x中获得一个复选框的最简单的方法是通过模板(一般是针对DataGrids)。
CheckBoxField列是显示一个复选框的一个较简单的绑定列。我们可以只把它绑定到一个包含布尔值的数据字段。有效的布尔值取自一个SQL Server表中的一个Bit类型(和其他数据库中的类似类型)的列,如果该控件绑定到一个定制集合,则取自一个bool类型的属性。特别是,如果把一个CheckBoxField列绑定到一个整数属性,则会得到一个异常,从而隐式地假设0为false,非0为true。
6. 图像字段
ImageField列类型表示一个在数据绑定控件中作为图像显示的字段。该单元包含一个<img>元素,因此底层的字段必须引用一个有效的URL。然而,我们可以任意组合URL。例如,我们可以使用DataImageUrlField执行直接绑定,其中该字段的内容填充<img>标签的Src属性。另外,我们可以使该列的单元指向一个外部页面(或者HTTP处理程序),从任何来源获取该图像的字节,并把它们下传给浏览器。如下代码说明了这种方法:
<Columns>
<asp:ImageField DataImageUrlField="employeeid"
DataImageUrlFormatString="showemployeepicture.aspx?id={0}"
DataAlternateTextField="lastname">
<ControlStyle Width="120px" />
</asp:ImageField>
<asp:TemplateField headertext="Employee">
<ItemStyle Width="220px" />
<ItemTemplate>
<b><%# Eval("titleofcourtesy") + " " +
Eval("lastname") + ", " +
Eval("firstname") %></b>
<%# Eval("title")%>
<hr />
<i><%# Eval("notes")%></i>
</ItemTemplate>
</asp:templatefield>
</Columns>
ImageField列中的单元用下一个URL的输出进行填充:
ShowEmployeePicture.aspx?id=xxx
不用说,xxx是employeeid字段中与DataImageUrlField关联的值。有趣的是,替代文本也可以是数据绑定的。我们对替代文本使用DataAlternateTextField属性。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询