博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SilverLight使用WCF RIA SERVICE实现对数据库的操作 (添加,删除,更新)
阅读量:4982 次
发布时间:2019-06-12

本文共 2253 字,大约阅读时间需要 7 分钟。

SilverLight搭建WCF聊天室详细过程 系列文章为大家演示了如何使用SilverLight搭建WCF即时通讯系统过程,多人视频正在开发中,我会持续更新这个系列,以后几篇我会对群里提出最多的问题进行解答并给出设计思路,WCF和IIS配置已经包含在此系列,希望各位朋友在提问前先找找前面的帖子,QQ群:.NET集中营45656086,位置已经不多,群里高手很多,而且比较有开源精神,我是营长,有问题大家可以在博客园留言或者进营!

  上一节为大家介绍了SilverLight连接数据库的基本方法和读取数据,这节我继续把对数据的添加,删除,以及更新给大家做个演示,我们还是依托GridView控件继续演示,在上一节我们已经看到了数据的显示,GridView的强大功能允许我们直接在控件上编辑,而不必每次刷新。

<
Grid x:Name=
"LayoutRoot"
 Background=
"White">
        <
sdk:DataGrid AutoGenerateColumns=
"True"
 Height=
"297"
 HorizontalAlignment=
"Left"
 Margin=
"10,10,0,0"
 Name=
"daDisplay"
 VerticalAlignment=
"Top"
 Width=
"578"
 RowEditEnded=
"daDisplay_RowEditEnded">
        <
/sdk:DataGrid>
        <
Button Content=
"删除"
 Height=
"23"
 HorizontalAlignment=
"Left"
 Click=
"btDel_Click"
 Margin=
"86,323,0,0"
 Name=
"btDel"
 VerticalAlignment=
"Top"
 Width=
"75"
 />
        <
Button Content=
"添加"
 Height=
"23"
 HorizontalAlignment=
"Left"
 Click=
"btAdd_Click"
  Margin=
"178,323,0,0"
 Name=
"btAdd"
 VerticalAlignment=
"Top"
 Width=
"75"
 />
    <
/Grid>

  前台代码主要添加了DataGrid的RowEditEnded事件,这个事件在编辑行或者单元格时发生,那么我们就可以在编辑结束后保存数据:

  1.修改更新

private 
void daDisplay_RowEditEnded(
object sender, DataGridRowEditEndedEventArgs e)
        {
            daDisplay.CommitEdit(DataGridEditingUnit.Row, 
true);
            domain.SubmitChanges();
        }

  domain是我上节定义的操作数据库类,早晨一直在测试这个事件,一开始使用RowEditing事件发现会产生死循环,每次执行完CommitEdit()都会重新激活这个事件,产生的原因是RowEditing在编辑结束后发生,而CommitEdit()是把所做更改提交到数据源,然后结束编辑,这就引发了RowEditing事件的再次发生,从而产生死循环,这里大家引以为鉴。

  domain.SubmitChanges()提交更新到数据库,操作类会为我们执行写入步骤。

  2:删除

  大家看到上面代码中我已经添加了删除按钮并定义了单击事件,下面给出删除代码:

private 
void btDel_Click(
object sender, RoutedEventArgs e)
        {
            domain.Accounts_Users.Remove(daDisplay.SelectedItem 
as Accounts_Users);
            domain.SubmitChanges();
        }

  首先从数据源中删除选中要删除的行,大家不必再考虑需不需要单独删除GridView中的行,或者重新绑定,在SilverLight中已经不存在Asp.net这种诟病,当数据源数据更改时,操作类会自动更新绑定对象。

  3.添加

  在已经定义好的添加按钮单击事件中,添加如下语句:

private 
void btAdd_Click(
object sender, RoutedEventArgs e)
        {
            Accounts_Users user = 
new Accounts_Users();
            domain.Accounts_Users.Add(user);
        }

  上面提到只要数据源改变,操作类就会刷新绑定到它上面的数据源,所以我们的思路就是只要把要新添加的行以数据库表抽象对象的形式添加到数据源,此时DataGrid上就会出现新行,再由用户自行添加数据,然后调用修改事件保存。

  到此为止SilverLight连接数据库操作的增,删,查,改已经演示完,有机会我会把WCF RIA SERVICE的自定义类传输和自定义查询给大家进行介绍,今天一直在查这方面资料,发现资料少的可怜,这也是大家学习SilverLight的最大障碍,以后我会尽自己所能为初学者写一些入门介绍,谢谢大家的支持。

转载于:https://www.cnblogs.com/swarb/archive/2012/04/19/9924427.html

你可能感兴趣的文章
Convert CString to std::string
查看>>
3 - Selenium元素定位和操作
查看>>
GCC C语言 DLL范例,含源码
查看>>
冲刺第一天(补发)
查看>>
iOS开发Xcode中切换显示语言实现国际化
查看>>
C++模板学习
查看>>
nginx
查看>>
大数据平台搭建-hadoop集群的搭建
查看>>
安装一些包管理的记录 win10
查看>>
Android RecyclerView notifyDataSetChanged不起作用
查看>>
AndroidStudio3.0 Canary 8注解报错Annotation processors must be explicitly declared now.
查看>>
Android 一个改进的okHttp封装库
查看>>
genymotion下载出现Unable to create virtual device,Server returned HTTP status code 0.
查看>>
Android 下拉刷新框架实现
查看>>
ViewPager + Fragment实现滑动标签页
查看>>
Spring与Hibernate实现增删改查两方法
查看>>
Genymotion 插件在 Eclipse 和 Android Studio 中点击后无法初始化 Initialize Engine: failed 解决方法...
查看>>
1R安装环境
查看>>
初学Python——Socket网络编程
查看>>
Linux 如何实现 VLAN - 每天5分钟玩转 OpenStack(12)
查看>>