网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP.NET技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.如何改变asp.net项目名称.
.包含实时功能的ASP.NET系统结构 .
.ASP.NET与数据库相关技巧.
.使用ASP.NET Atlas ListView控件.
.asp.net创建文件夹的IO类的问题.
.ASP.net 验证码(C#).
.通过系统配置来提高ASP.NET应用程.
.ASP.NET ViewState 初探 (2).
.Asp.Net、Ado.net 数据库编程超级.
.ASP.NET应用程序资源访问安全模型.
.DataGrid同时具有分页和排序功能.
.Asp.Net 使用 GDI+ 绘制3D饼图入.
.ASP.Net应用程序的多进程模型 .
..NET 1.1 下不使用 System.Web.M.
.ASP.NET创建Web服务之使用事务.
.TreeView使用笔记.
.故障解析:.NET开发正则表达式中.
.ASP.NET 2.0高级数据处理之数据绑.
.ASP.NET设计网络硬盘之两重要类.
.一些关于SQL2005+ASP.NET2.0的问.

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

发表日期:2006-11-23


  数据控件支持多种用于处理空值或缺失数据的方法。例如,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>

上一篇:Access数据库在asp.net程序中相对路径的解决方法 人气:5000
下一篇:ASP.NET 2.0高级数据处理之主从数据表 人气:4576
浏览全部ASP.NET 2.0的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐