URL中{0}绑定数据是怎么使用的

求解... 求解 展开
 我来答
匿名用户
推荐于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属性。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式