C#Silverlight Datagrid-ADO.Net数据实体CRUD?
我学习了本教程,该教程允许我创建一个SilverlightC#Silverlight Datagrid-ADO.Net数据实体CRUD?,silverlight,entity-framework,datagrid,ado.net,Silverlight,Entity Framework,Datagrid,Ado.net,我学习了本教程,该教程允许我创建一个SilverlightDataGrid,从SQL Server数据库中提取数据。我的下一步是能够对这组数据执行CRUD(希望通过DataGrid,只需编辑要更新的字段等,并将此帖子发回)。我被告知datagrid需要设置为“双向绑定模式”-但是我不确定如何设置,因为datagrid的Xaml实际上是-(因为datagrid从工具箱中被放到Page.Xaml文件中并自动生成) 我特别想继续使用这个ADO.Net实体框架实现。谁能给我一些建议,或者用一些样品给我指
DataGrid
,从SQL Server数据库中提取数据。我的下一步是能够对这组数据执行CRUD(希望通过DataGrid
,只需编辑要更新的字段等,并将此帖子发回)。我被告知datagrid需要设置为“双向绑定模式”-但是我不确定如何设置,因为datagrid
的Xaml实际上是
-(因为datagrid
从工具箱中被放到Page.Xaml文件中并自动生成)
我特别想继续使用这个ADO.Net实体框架实现。谁能给我一些建议,或者用一些样品给我指出正确的方向?我将不胜感激
亲切的问候
编辑:
如果您不介意快速浏览一下我链接的教程的内容,以便您确切了解我的设置,那将是一个很大的帮助。我对Silverlight完全陌生,我只想知道如何使用ADO.Net实体框架和Silverlight Datagrid在数据库上执行CRUD。Goober
我不确定我是否会回答您的问题,但我将向您展示如何从代码中将信息绑定到DataGrid
,并将该信息设置为双向绑定
首先,这里是一个讨论单向绑定、一次性绑定和双向绑定之间区别的示例
在数据网格中进行编辑后,有三种方法可以更改数据源:
首先
您可以手动设置XAML中的列,并指示对每个变量的绑定为“双向”
<data:DataGrid Name="data" AutoGenerateColumns="False">
<data:DataGrid.Columns>
<data:DataGridTextColumn Header="Test"
Binding="{Binding test, Mode=Two-Way}"/>
</data:DataGrid.Columns>
</data:DataGrid>
rpdata
表示数据网格
第三
您可以将“CellEditEnded”事件添加到数据网格中,而不是手动链接每一列,如下所示
在事件的代码中,可以添加以下代码:
xt.CommitEdit();
这将更新数据源
您必须为您的服务创建一个新的契约,该契约接受数据网格更新的实体
[OperationContract]
public void UpdateWork(List<Assumptions> updates)
在谷歌搜索了很多之后,这个教程证明了它能帮我做我想做的事情,这是一个非常好的帮助
祝继续执行此实现的所有人好运
:-D因此,目前我使用ADO.Net实体框架作为数据库和silverlight datagrid之间的中间人。我需要采取哪些步骤来更改此设置,从简单的检索和显示数据的方式更改为能够进行更改并将其保留回数据库?(我目前看不出上面的代码适合我的项目,因为目前实际上没有什么进展)。那么我是否必须为我希望datagrid包含的每个可编辑列定义一个新的“”?是的,尽管您可能会将数据源绑定到网格,并循环遍历rpdata.Columns,并将bindingmode设置为双向(在代码中)。我还没有测试过这个。真不敢相信我会问这个问题,感觉像一个完全的noob(只是最近在winforms上使用了3年后才切换到web)-foreach循环去了哪里?在xt.committedit()之后;在DATAGRID_CellEditEnded事件中!?嗯,我重新格式化了我的答案,也许这会让事情变得更清楚
[OperationContract]
public void UpdateWork(List<Assumptions> updates)
//Create a new entity datacontext
Entities ds = new Entities();
//For each of the entities in the list
foreach (Assumptions update in updates)
{
try
{
//In the datacontext find the entity with the same primary key as the updated one
var test = from x in ds.Assumptions
where x.ID.Equals(update.ID)
select x;
//Update the entity
test.First() = update;
}
catch (Exception e)
{
//If the entity does not exist, add it to the context
ds.AddToAssumptions(update);
}
}
//Save the context
ds.SaveChanges();