快捷搜索:  as

Silverlight实例教程 – Datagrid,Dataform数据验证和V

上一篇,我们评论争论了,捕获用户提交数据验证。本篇将集中评论争论Datagrid和Dataform两个数据控件的数据验证措施,此中,我们会附加先容一个新的验证控件ValidationSummary。

概述

Datagrid和Dataform是Silverlight中最常用的两个数据控件,其主要目的是作为数据聚拢的载体控件。这两个控件不仅支持自动数据绑定,而且容许用户添加许多自定义行径操作,例如编辑,排序,删除,添加等。而在日常项目开拓中,常常会碰着用户在编辑,或者添加时对数据的验证判断,在数据commit前,即捕获数据非常并返回提示信息到客户端。

ValidationSummary控件

在Datagrid和Dataform数据验证中,最为常用的是ValidationSummary控件,该控件和WebForm中的ValidationSummary控件类似,其功能都是将差错信息聚拢显示在一个ListBox控件中。简单的说,ValidationSummary控件是一个能够容纳验证差错聚拢的容器,能够检测和显示当前页面所有验证结果到客户端。

命名控件:System.Windows.Controls

装置:System.Windows.Controls.Data.Input (位于 System.Windows.Controls,Data.Input.dll)

我们仍然应用上一篇的源代码项目,SilverlightValidationDemo,简单改动代码如下:

首先必要添加新的命名空间引用,

然后添加ValidationSummary控件,即可

其运行结果如下:

这样就一个ValidationSummary应用实例。细心的同伙可能已经发明,上图,一共呈现了八处验证差错提示,而在ValidationSummary中,仅显示了四个。这里必要对此进行简单的阐明,

1. 假如应用ValidationSummary控件捕获验证差错,必须将Mode设置为Twoway;

2. 假如应用ValidationSummary控件捕获验证差错,必须将ValidatesOnExceptions设置为True;

3. 假如应用ValidationSummary控件捕获验证差错,必须将NotifyOnValidationError设置为True;

在我们原有的代码中,都没有满意以上前提,以是ValidationSummary轻忽其验证差错信息。参考代码如下:

StackPanel Orientation="Horizontal" Margin="5">

TextBlock Text="邮件: " VerticalAlignment="Center"/>

TextBox x:Name="txtEmail" Width="200" DataContext="{Binding Source={StaticResource UserDataContext}}" Text="{Binding Path=email, Mode=TwoWay, ValidatesOnNotifyDataErrors=False, NotifyOnValidationError=True, ValidatesOnExceptions=True}" />

StackPanel>

StackPanel Orientation="Horizontal" Margin="5">

TextBlock Text="地址: " VerticalAlignment="Center"/>

TextBox x:Name="txtAddress" Width="200" DataContext="{Binding Source={StaticResource UserDataContext}}" Text="{Binding Path=address, Mode=TwoWay, ValidatesOnDataErrors=True, NotifyOnValidationError=False, ValidatesOnExceptions=True}" />

StackPanel>

StackPanel Orientation="Horizontal" Margin="5">

TextBlock Text="电话: " VerticalAlignment="Center"/>

TextBox x:Name="txtPhone" Width="200" DataContext="{Binding Source={StaticResource UserDataContext}}" Text="{Binding Path=phone, Mode=TwoWay, ValidatesOnDataErrors=True, NotifyOnValidationError=False, ValidatesOnExceptions=True}" />

StackPanel>

StackPanel Orientation="Horizontal" Margin="5">

TextBlock Text="成就等级: " VerticalAlignment="Center"/>

TextBox x:Name="txtGradeLevel" Width="200" DataContext="{Binding Source={StaticResource UserDataContext}}" Text="{Binding Path=gradelevel, Mode=TwoWay, ValidatesOnDataErrors=True, NotifyOnValidationError=False, ValidatesOnExceptions=True}" />

StackPanel>

StackPanel Orientation="Horizontal" Margin="5">

TextBlock Text="成就范围: " VerticalAlignment="Center"/>

TextBox x:Name="txtGradeRange" Width="200" DataContext="{Binding Source={StaticResource UserDataContext}}" Text="{Binding Path=graderange, Mode=TwoWay, ValidatesOnDataErrors=True, NotifyOnValidationError=False, ValidatesOnExceptions=True}" />

StackPanel>

您可能还会对下面的文章感兴趣: