微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Silverlight 4 + RIA Services之商业应用系列----3 DataForm使用

系列文章

 part1: 如何使用RIA Services

part2: RIA Services更新和验证

part3:RIA Services数据新增

part4:皮肤的更改

part5:报表的展示

part6:Endpoint的设置

part7:如何使用RIA Service Class Library 

part8:url重写和界面友好

1.使用DataForm来新增记录:

使用DataForm新增记录是个很不错的功能

首先你得把System.Windows.Controls.Data.DataForm.Toolkit引用到项目中。

 

然后在上图所示区域放入一个DataForm

设置DataForm属性如下:

@H_502_206@    <dataform:DataForm x:Name="dataForm" Grid.Column="1" ItemsSource="{Binding ElementName=restaurantDomainDataSource, Path=Data}" />

现在运行下就能看到DataForm显示了。Yeah,It’s Work…..

你会看到这里只有Cancel按钮,我们很希望加一个Submit按钮。不过就是现在也可以更新数据了,使用DataForm EditEnd事件。DataForm提供了几个功能可以自定义模板,

 EditTemplate,NewItemTemplateReadonlyTemplate三个模板。

我们下面就定义几个模板来试试。

page.Resource添加如下代码

@H_502_206@     <DataTemplate x:Key="RestuarantReadTemplate">

@H_502_206@            <StackPanel>

@H_502_206@                <toolkit:datafield>

@H_502_206@                    <TextBox  Text="{Binding Address,Mode=TwoWay}" />

@H_502_206@                </toolkit:datafield>

@H_502_206@                    <toolkit:datafield>

@H_502_206@                    <TextBox Text="{Binding City,Mode=TwoWay}"/>

@H_502_206@                </toolkit:datafield>

@H_502_206@                <toolkit:datafield>

@H_502_206@                    <TextBox Text="{Binding ContactName,Mode=TwoWay}"/>

@H_502_206@                </toolkit:datafield>

@H_502_206@                <toolkit:datafield>

@H_502_206@                    <TextBox Text="{Binding ContactTitle,Mode=TwoWay}"/>

@H_502_206@                </toolkit:datafield>

@H_502_206@                <toolkit:datafield>

@H_502_206@                    <TextBox Text="{Binding Fax,Mode=TwoWay}"/>

@H_502_206@                </toolkit:datafield>

@H_502_206@                <toolkit:datafield>

@H_502_206@                    <TextBox Text="{Binding ID,Mode=TwoWay}"/>

@H_502_206@                </toolkit:datafield>

@H_502_206@                <toolkit:datafield>

@H_502_206@                    <TextBox Text="{Binding Name,Mode=TwoWay}"/>

@H_502_206@                </toolkit:datafield>

@H_502_206@                <toolkit:datafield>

@H_502_206@                    <TextBox Text="{Binding PostalCode,Mode=TwoWay}"/>

@H_502_206@                </toolkit:datafield>

@H_502_206@            </StackPanel>

@H_502_206@        </DataTemplate>

 

然后修改DataForm如下:

@H_502_206@<dataform:DataForm x:Name="dataForm" Grid.Column="1" ItemsSource="{Binding ElementName=restaurantDomainDataSource, Path=Data}" ReadOnlyTemplate="{StaticResource RestuarantReadTemplate}" />

运行下看结果:

 

因为只有查看模板,所以现在不能编辑也不能添加,只允许删除操作。

 

下面我就添加上编辑和新增模板。

新智数据模板:

@H_502_206@        <DataTemplate x:Key="RestuarantInsertTemplate">

@H_502_206@            <StackPanel>

@H_502_206@                <toolkit:datafield>

@H_502_206@                    <TextBox  Text="{Binding Address,Mode=TwoWay}" />

@H_502_206@                </toolkit:datafield>

@H_502_206@                <toolkit:datafield>

@H_502_206@                    <TextBox Text="{Binding City,Mode=TwoWay}"/>

@H_502_206@                </toolkit:datafield>

@H_502_206@                <toolkit:datafield>

@H_502_206@                    <TextBox Text="{Binding ContactName,Mode=TwoWay}"/>

@H_502_206@                </toolkit:datafield>

@H_502_206@                <toolkit:datafield>

@H_502_206@                    <TextBox Text="{Binding HomePage,Mode=TwoWay}"/>

@H_502_206@                </toolkit:datafield>

@H_502_206@                <toolkit:datafield>

@H_502_206@                    <TextBox Text="{Binding ImagePath,Mode=TwoWay}"/>

@H_502_206@                </toolkit:datafield>

@H_502_206@                <toolkit:datafield>

@H_502_206@                    <TextBox Text="{Binding Phone,Mode=TwoWay}"/>

@H_502_206@                </toolkit:datafield>

@H_502_206@                <toolkit:datafield>

@H_502_206@                    <TextBox Text="{Binding Region,Mode=TwoWay}"/>

@H_502_206@                          </toolkit:datafield>

@H_502_206@                <Button Content="Submit"></Button>

@H_502_206@            </StackPanel>

@H_502_206@        </DataTemplate>

 

再次运行,就会看到新增记录的按钮可以使用了。

 

@H_502_206@上面是使用DataForm控件来进行了。那么,当我们完成了编辑操作,如何让服务器段完成更新呢?需要用到dataformEditEnded事件.

@H_502_206@当事件完成时,我们需要RIA Service的数据源向服务器提交数据。事件代码如下:

@H_502_206@if (e.Editaction == DataFormEditaction.Cancel)

@H_502_206@                restaurantDomainDataSource.SubmitChanges();

@H_502_206@ 

@H_502_206@这样就能数据的及时更新。

@H_502_206@ 

@H_502_206@2.使用自定义的数据模板来完成更新。

@H_502_206@纯属个人实验,如果你有兴趣可以在此基础上完善。

@H_502_206@首先需要定义一个Custom Restaurant模型, 也就是Model。它包含需要填写的所有字段。

@H_502_206@然后定义一个自定义DataForm,当然和SilverlightControl ToolkitDataForm基本没联系。

@H_502_206@代码比较多,我贴个类结构图把。

@H_502_206@

@H_502_206@当上面这个模板的数据提交时,我们如何使用DomainService回传数据呢?

@H_502_206@我自己对Invoke方法不熟悉,我就用本办法:

@H_502_206@ 

@H_502_206@

@H_502_206@把每个属性的值赋值给Restaurant每个属性的值。最后来个SubmitChanges().就完事了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐