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的最大障碍,以后我会尽自己所能为初学者写一些入门介绍,谢谢大家的支持。