ASP.NET 2.0高级数据处理之处理Null值

asp.net|高级|数据

  数据控件支持多种用于处理空值或缺失数据的方法。例如,GridView、FormView和DetailsView都支持EmptyDataText或EmptyDataTemplate属性,当数据源没有返回数据行的时候,你可以使用这些属性来指定控件显示的内容。我们只需要设置EmptyDataText和EmptyDataTemplate其中的一个(如果两个都设置了,EmptyDataTemplate会被重载)。你也可以在绑定字段(和衍生的字段类型)、模板字段或数据源参数对象上指定ConvertEmptyStringToNull属性,指明在调用相关的数据源操作之前,来自客户端的String.Empty值必须被转换为空值。

  ObjectDataSource也支持ConvertNullToDbNull属性,当相关的方法要求用DbNull代替空值(Visual Studio数据集中的TableAdapter类就有这个要求)的时候,我们就可以把这个属性设置为真。你还可以指定绑定字段(和衍生的字段类型)的NullDisplayText属性,当数据源返回的某个字段的值为空的时候,它指定显示的内容。如果在编辑模式中这个值没有发生变化,那么在更新操作中这个值会以空值的形式返回给后端数据源。最后,你还可以指定数据源参数的DefaultValue属性,如果某个传递进来的参数值为空的时候,该属性就给参数指定默认值。这些属性是"链式反应"的,例如,如果ConvertEmptyStringToNull和DefaultValue都被设置了,那么String.Empty值会首先被转换为空(null),接着被转换为默认值。

<asp:DetailsView…...>
 <Fields>
  <asp:BoundField DataField="Phone" HeaderText="Phone" NullDisplayText="not listed" SortExpression="Phone" />
  <asp:BoundField DataField="Fax" HeaderText="Fax" NullDisplayText="not listed" SortExpression="Fax" />
 </Fields>
 <EmptyDataTemplate>
  <asp:Image ID="Image1" runat="server" ImageUrl="~/Images/warning.gif" />There are no records to display
 </EmptyDataTemplate>
</asp:DetailsView>
<asp:SqlDataSource ……>
 <UpdateParameters>
  <asp:Parameter Name="ContactTitle" Type="String" DefaultValue="Owner" ConvertEmptyStringToNull="true" />
  <asp:Parameter Name="Region" Type="String" ConvertEmptyStringToNull="true" />
  <asp:Parameter Name="Phone" Type="String" ConvertEmptyStringToNull="true" />
  <asp:Parameter Name="Fax" Type="String" ConvertEmptyStringToNull="true" />
  <asp:Parameter Name="CustomerID" Type="String" />
 </UpdateParameters>
 ……
</asp:SqlDataSource>
  你可以使用这些处理空值的属性来实现下拉列表过滤器,让它开始时显示数据源的所有值,直到过滤器中的某个值被选中为止。我们是这样实现它的:首先给下拉列表添加一个空字符串值的数据项,并设置数据源中的与下拉列表相关的ControlParameter(控件参数)的ConvertEmptyStringToNull属性。

  接着在数据源的SelectCommand中,你可以通过检测空值来返回所有(没有过虑)值。下面的例子演示了这种技术,它使用了一个简单的SQL命令,当然你也可以在存储过程的实现中执行空值检测。请注意下拉列表的AppendDataBoundItems属性的使用,它允许来自下拉列表数据源的值被添加到"ALL"(这个项是我们静态添加的)数据项后面。同时我们要注意,在默认情况下,如果传递给SelectCommand 的相关参数的值中只要有一个为空,SqlDataSource就不执行Select操作。当传递了空值的时候,为了强制Select操作执行,你可以把它的CancelSelectOnNullParameter属性设置为假。

<asp:DropDownList AppendDataBoundItems="True" AutoPostBack="True" DataSourceID="SqlDataSource2" DataTextField="state" DataValueField="state" ID="DropDownList1" runat="server">
 <asp:ListItem Value="">ALL</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:Pubs %>" ID="SqlDataSource2" runat="server" SelectCommand="SELECT DISTINCT [state] FROM [authors]">
</asp:SqlDataSource>

<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:Pubs %>" ID="SqlDataSource1" runat="server" SelectCommand="SELECT au_id, au_lname, au_fname, state FROM authors WHERE state = IsNull(@state, state)" CancelSelectOnNullParameter="False">
<SelectParameters>
 <asp:ControlParameter ControlID="DropDownList1" Name="state" PropertyName="SelectedValue" Type="String" />
</SelectParameters>
</asp:SqlDataSource>

时间: 2024-10-02 20:22:55

ASP.NET 2.0高级数据处理之处理Null值的相关文章

ASP.NET 2.0高级数据处理之数据绑定

asp.net|高级|数据 在前面的"模板中的数据绑定"部分中我们论述过,ASP.NET包含了一种宣告式的数据绑定语法,用于在数据绑定模板中把数据源字段与控件的属性相关联.你也可以在代码中使用<%# ... >语法来进行任意值的数据绑定,例如页面和控件属性.集合.表达式,甚至于方法调用的返回结果.为了强制计算数据绑定的值,你必须在包含数据绑定语法的页面或控件上调用DataBind方法.下面的表格显示了ASP.NET中的数据绑定语法的一些例子. 单个属性 Customer:

ASP.NET 2.0高级数据处理之数据绑定语法

asp.net|高级|数据|语法 在前面的"模板中的数据绑定"部分中我们论述过,ASP.NET包含了一种宣告式的数据绑定语法,用于在数据绑定模板中把数据源字段与控件的属性相关联.你也可以在代码中使用<%# ... >语法来进行任意值的数据绑定,例如页面和控件属性.集合.表达式,甚至于方法调用的返回结果.为了强制计算数据绑定的值,你必须在包含数据绑定语法的页面或控件上调用DataBind方法.下面的表格显示了ASP.NET中的数据绑定语法的一些例子. 单个属性 Custome

ASP.NET 2.0高级数据处理之主从数据表

asp.net|高级|数据 在前面的文章中,我们已经知道如何将ControlParameter(控件参数)与GridView的SelectedValue属性相关联以实现主-从数据表.SelectedValue属性返回DataKeyNames属性所指定的第一个字段的值.你也可以给DataKeyNames属性指定多个用逗号分隔的字段值,例如,你可能需要把多个值传递到从表的数据源.这些额外的键字段值是通过SelectedDataKey属性暴露的,它返回一个DataKey对象,包含键字段的名称/值对(p

ASP.NET 2.0高级数据处理之冲突检测

asp.net|高级|数据 前面我们提到,数据绑定控件把传递给数据源的值存放在相互独立的Keys.Values(新值)和 OldValues字典中.在默认情况下,SqlDataSource和ObjectDataSource会忽略OldValues字段,只使用Keys和Values.这种行为是由数据源的ConflictDetection属性检测的,在默认情况下这个属性的值被设置为OverwriteChanges.OverwriteChanges模式意味着"为了更新或删除记录,仅仅匹配主键值&quo

ASP.NET 2.0高级数据处理之使用参数

你可以处理Select.Update.Insert.Delete和Filter的事件,以验证并处 理传递给这些操作的参数值.为了达到这个目标,数据绑定的控件和数据源控件 都暴露了适当的事件.例如,在GridView的Updating事件中,你就可以看到Keys .NewValues和OldValues字典中的参数名称和值,而它们将会被传递到数据源. 在数据源一端,你可以处理SqlDataSource的Updating事件,看到这些应用到下 层命令对象的参数,而这些命令将会执行以完成相关操作.类似

ASP.NET 2.0高级数据处理之处理控件事件

在前面的部分中,你已经看到了几个数据控件事件的例子.数据控件的事件 都是在页面执行生命周期的适当时候提供给你,供你插入自定义代码的.一般情 况下,在某种特定的操作发生之前和之后,数据控件都会暴露事件.在某种操作 之前调用的事件的名称一般带有-ing后缀,而在某种操作之后调用的事件的名称 一般带有-ed后缀.例如,GridView所支持的事件包括: · PageIndexChanging和PageIndexChanged - 在分页操作之前和之后引发 · SelectedIndexChanging

ASP.NET2.0高级数据处理之数据绑定

本文详细介绍了ASP.NET 2.0高级数据处理中的数据绑定,包括有绑定语法,指定运行时所期望的数据类型:如何绑定到公共变量和页面的简单属性:如何绑定到另一个控件的属性:如何绑定到通用语言运行时集合类型:如何绑定到ArrayList:如何绑定到DataView等. 在前面的"模板中的数据绑定"部分中我们论述过,ASP.NET包含了一种宣告式的数据绑定语法,用于在数据绑定模板中把数据源字段与控件的属性相关联.你也可以在代码中使用<%# ... >语法来进行任意值的数据绑定,例

求ASP.NET 2.0高级编程(第4版) 英文

问题描述 如题求这书,最好是完整的如果没有完整的,要第一章也可以.谢谢 解决方案 解决方案二:第一章的http://www.shubulo.com/thread-35493-1-2.html

介绍几本学习ASP.NET 2.0的书

asp.net ASP.NET 2.0其实已经出来挺长时间了,但国内关于ASP.NET 2.0的书似乎很少.前几天特意关注了一下ASP.NET 2.0的书,有些感想,和大家分享. 如果你是一个对ASP.NET 2.0很关注的人,那么一定不会没有听说过Dino Esposito这个名字.他写了两本关于ASP.NET 2.0的书,<Programming Microsoft ASP.NET 2.0: Core Reference>和<Programming Microsoft ASP.NET