RIA Services之商业应用----3 DataForm使用

1.使用DataForm来新增记录:
使用DataForm新增记录是个很不错的功能。
首先你得把System.Windows.Controls.Data.DataForm.Toolkit引用到项目中。
 
然后在上图所示区域放入一个DataForm
设置DataForm属性如下:
    <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中添加如下代码:
     <DataTemplate x:Key="RestuarantReadTemplate">
            <StackPanel>
                <toolkit:DataField>
                    <TextBox  Text="{Binding Address,Mode=TwoWay}" />
                </toolkit:DataField>
                    <toolkit:DataField>
                    <TextBox Text="{Binding City,Mode=TwoWay}"/>
                </toolkit:DataField>
                <toolkit:DataField>
                    <TextBox Text="{Binding ContactName,Mode=TwoWay}"/>
                </toolkit:DataField>
                <toolkit:DataField>
                    <TextBox Text="{Binding ContactTitle,Mode=TwoWay}"/>
                </toolkit:DataField>
                <toolkit:DataField>
                    <TextBox Text="{Binding Fax,Mode=TwoWay}"/>
                </toolkit:DataField>
                <toolkit:DataField>
                    <TextBox Text="{Binding ID,Mode=TwoWay}"/>
                </toolkit:DataField>
                <toolkit:DataField>
                    <TextBox Text="{Binding Name,Mode=TwoWay}"/>
                </toolkit:DataField>
                <toolkit:DataField>
                    <TextBox Text="{Binding PostalCode,Mode=TwoWay}"/>
                </toolkit:DataField>
            </StackPanel>
        </DataTemplate>
 
然后修改DataForm如下:
<dataform:DataForm x:Name="dataForm" Grid.Column="1" ItemsSource="{Binding ElementName=restaurantDomainDataSource, Path=Data}" ReadOnlyTemplate="{StaticResource RestuarantReadTemplate}" />
运行下看结果:
 
因为只有查看模板,所以现在不能编辑也不能添加,只允许删除操作。
 
下面我就添加上编辑和新增模板。
新智数据模板:
        <DataTemplate x:Key="RestuarantInsertTemplate">
            <StackPanel>
                <toolkit:DataField>
                    <TextBox  Text="{Binding Address,Mode=TwoWay}" />
                </toolkit:DataField>
                <toolkit:DataField>
                    <TextBox Text="{Binding City,Mode=TwoWay}"/>
                </toolkit:DataField>
                <toolkit:DataField>
                    <TextBox Text="{Binding ContactName,Mode=TwoWay}"/>
                </toolkit:DataField>
                <toolkit:DataField>
                    <TextBox Text="{Binding ContactTitle,Mode=TwoWay}"/>
                </toolkit:DataField>
                <toolkit:DataField>
                    <TextBox Text="{Binding Fax,Mode=TwoWay}"/>
                </toolkit:DataField>
                <toolkit:DataField>
                    <TextBox Text="{Binding HomePage,Mode=TwoWay}"/>
                </toolkit:DataField>
                <toolkit:DataField>
                    <TextBox Text="{Binding ID,Mode=TwoWay}"/>
                </toolkit:DataField>
                <toolkit:DataField>
                    <TextBox Text="{Binding ImagePath,Mode=TwoWay}"/>
                </toolkit:DataField>
                <toolkit:DataField>
                    <TextBox Text="{Binding Name,Mode=TwoWay}"/>
                </toolkit:DataField>
                <toolkit:DataField>
                    <TextBox Text="{Binding Phone,Mode=TwoWay}"/>
                </toolkit:DataField>
                <toolkit:DataField>
                    <TextBox Text="{Binding PostalCode,Mode=TwoWay}"/>
                </toolkit:DataField>
                <toolkit:DataField>
                    <TextBox Text="{Binding Region,Mode=TwoWay}"/>
                          </toolkit:DataField>
                <Button Content="Submit"></Button>
            </StackPanel>
        </DataTemplate>
 
再次运行,就会看到新增记录的按钮可以使用了。
 
上面是使用DataForm控件来进行了。那么,当我们完成了编辑操作,如何让服务器段完成更新呢?需要用到dataformEditEnded事件.
当事件完成时,我们需要RIA Service的数据源向服务器提交数据。事件代码如下:
if (e.EditAction == DataFormEditAction.Cancel)
                restaurantDomainDataSource.SubmitChanges();
 
这样就能数据的及时更新。
 
2.使用自定义的数据模板来完成更新。
纯属个人实验,如果你有兴趣可以在此基础上完善。
首先需要定义一个Custom Restaurant模型, 也就是Model。它包含需要填写的所有字段。
然后定义一个自定义的DataForm,当然和SilverlightControl ToolkitDataForm基本没联系。
代码比较多,我贴个类结构图把。
当上面这个模板的数据提交时,我们如何使用DomainService回传数据呢?
我自己对Invoke的方法不熟悉,我就用本办法:
 
把每个属性的值赋值给Restaurant每个属性的值。最后来个SubmitChanges().就完事了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值